로그는 고유 한 스트림을 사용하는 여러 대기열에 연결되어 있지만 다른 대기열에 연결되어있을 가능성이 높은 스트림을 가지고 있다는 환상을 뒷받침합니다. 두 수신기 개체 모두에서 로거는 재정의 된 queue
이름을 기록하지만이 큐 이름은 jmsSource
을 구성하는 데 사용되지 않습니다.
jmsSource
의 정의는 표시하지 않습니다. 외관상으로는 MessageListener
형질의 외부에 정의되어 있는데,이 경우 ListenerA
과 ListenerB
은 모두 jmsSource
을 사용합니다. 즉, ListenerA
및 ListenerB
동안 jmsPipeline
의 고유 인스턴스 (킬 스위치가 다른 이유이다),이 jmsPipeline
인스턴스 모두 jmsSource
가 호출 할 때마다 다른 Source
을 만드는 def
아닌 경우 (동일한 jmsSource
인스턴스로부터 도출되는이 이 경우에도 기본적인 문제는 남아 있습니다 : queue
은 구성에서 사용되지 않습니다). Alpakka에서
는 JMS 큐는 너무
jmsSource
아마 같이 보입니다,
JmsSourceSettings
에 구성되어있는 다음
ListenerA.start()
, 예를 들어,라고
val jmsSource: Source[String, NotUsed] = JmsSource.textSource(
JmsSourceSettings(connectionFactory).withBufferSize(10).withQueue("MyQueue")
) // the queue is configured here^
, 다음이 기록됩니다
Invoking listener : Queue_A
listener : Queue_A started
다시 위의 로그 문에서 "Queue_A"
은 def queue: String
멤버의 값이 ListenerA
입니다. 위의 예에서 실제로 jmsSource
("MyQueue"
)에 구성된 대기열 일 필요는 없습니다. ListenerB
의 경우와연결자에 로그인하는 경우에도 마찬가지입니다.
직접적인 수정은 MessageListener
특성 내부 jmsSource
하고 JmsSourceSettings
의 정의를 이동하고 실제로 이러한 설정에 queue
을 사용하는 것입니다.