나는 Oracle AQ
에서 데이터를 대기열에서 제외하기 위해 Alpakka
및 그 JMS
커넥터로 게임을하고 있습니다. 아래의 매우 기본적인 구현 방법을 따라 가면 this 가이드가 될 수 있습니다.Alpakka JMS 거래
제 질문은 어떻게 처리 할 수 있습니까? 예외가 발생하면 내 메시지가 손실되지 않도록 보장 할 수 있습니다. 이 PL/SQL
인 경우
object ConsumerApp extends App {
implicit val system: ActorSystem = ActorSystem("actor-system")
implicit val materializer: ActorMaterializer = ActorMaterializer()
val connectionFactory = AQjmsFactory.getConnectionFactory(getOracleDataSource())
val out = JmsSource.textSource(
JmsSourceSettings(connectionFactory).withQueue("My_Queue")
)
val sink = Sink.foreach { message: String =>
println("in sink: " + message)
throw new Exception("") // !!! MESSAGE IS LOST !!!
}
out.runWith(sink, materializer)
}
,이 솔루션은 다음과 같이 될 것이다 :
DECLARE
dequeue_options DBMS_AQ.DEQUEUE_OPTIONS_T;
message_properties DBMS_AQ.MESSAGE_PROPERTIES_T;
message_handle RAW (44);
msg SYS.AQ$_JMS_TEXT_MESSAGE;
BEGIN
DBMS_AQ.dequeue (
queue_name => 'My_Queue',
dequeue_options => dequeue_options,
message_properties => message_properties,
payload => msg,
msgid => message_handle
);
-- do something with the message
COMMIT;
END;
그래서이 질문은 몇 시간 전에 발표 된 새로운 기능입니다. 나는 그 때 운이 좋다 :). – Feyyaz
가능한 빨리 시도해 보겠습니다. – Feyyaz
지금 시도해 보는 가장 좋은 방법은 무엇입니까? 공개 저장소에 아직 없습니다. – Feyyaz