Pergunta

Estou investigando usando ActiveMQ como uma fila de mensagens incorporado em processo na minha aplicação, mas estou um pouco preso em como eu vou sobre como iniciar uma aplicação como acima. Imagino-lo assim (pseudocódigo, é claro):

configureBroker ()
broker.start ()

createProducer (broker)
producer.start ()

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

waitForSignal ()
signalProducerShutdown ()

waitForEmptyQueues ()
signalConsumerShutdown ()

broker.stop ()

Eu tentei montar uma versão simples deste, mas eu estou preso em como escrever os produtores e os consumidores de forma a como fazê-los trabalhar para sempre, ou até dito para parar. Qual é a melhor maneira de fazer isso? Eu estou falando especificamente sobre o aspecto de threading; o que eu preciso / quero para desovar fora em seu próprio segmento, etc ...

Eu sou completamente novo para aplicativos baseados em fila de mensagens, por isso, ser detalhado com os seus exemplos.

Foi útil?

Solução

Quando você especificar o ActiveMQConnectionFactory, você pode especificar "vm: //", onde nome é o nome específico intra-vm de seu corretor e ele vai começar o corretor dentro da VM.

Por exemplo,

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

A partir daí você pode criar seus produtores ou consumidores da mesma como se fosse através da rede. Contanto que você use o mesmo nome para o corretor, você pode ter vários segmentos / código aberto / falar com a mesma instância VM.

Esta solução só permite a comunicação com a VM, ele não abre todas as portas externas. Estou assumindo que este é o que você estava procurando desde que você disse que queria incorporado, as filas em processo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top