문제

ActiveMQ를 응용 프로그램에서 임베디드 내 프로세스 메시지 대기열로 사용하고 있지만 그러한 응용 프로그램을 시작하는 방법에 약간 고정되어 있습니다. 나는 그것을 그렇게 생각합니다 (물론 Pseudocode) :

configureBroker ()
broker.start ()

createProducer (broker)
producer.start ()

for each desired consumer
    createConsumer (broker)
    consumer.start ()

waitForSignal ()
signalProducerShutdown ()

waitForEmptyQueues ()
signalConsumerShutdown ()

broker.stop ()

나는 이것의 간단한 버전을 조립하려고 노력했지만, 생산자와 소비자를 영원히 일하거나 그만두라고 지시하는 방법으로 생산자와 소비자를 쓰는 방법에 갇혀 있습니다. 이것을하는 가장 좋은 방법은 무엇입니까? 나는 스레딩 측면에 대해 구체적으로 말하고 있습니다. 내가 무엇을 필요로합니까/자신의 스레드에서 스폰하고 싶습니까?

나는 메시지 대기열 기반 응용 프로그램을 완전히 익숙하지 않았으므로 예제에 맞춰보세요.

도움이 되었습니까?

해결책

ActiveMqConnectionFactory를 지정하면 "VM : //"을 지정할 수 있습니다.

예를 들어,

String broker = "vm://stackOverflowTest";
ActiveMQConnectionFactory connectionFactory = 
        new ActiveMQConnectionFactory(broker);
Connection amqcon = connectionFactory.createConnection();
amqcon.start();

거기에서 생산자 나 소비자가 네트워크 위에있는 것처럼 동일하게 만들 수 있습니다. 브로커에 동일한 이름을 사용하는 한 동일한 VM 인스턴스에 여러 스레드 / 코드를 열 / 대화 할 수 있습니다.

이 솔루션은 VM과의 통신 만 허용하며 외부 포트를 열지 않습니다. 나는 당신이 당신이 임베디드, 과정 내 대기열을 원한다고 말했기 때문에 이것이 당신이 찾고 있던 것이라고 가정합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top