进程中的ActiveMQ生产者/消费者示例?

时间:2009-04-13 14:33:06

标签: java queue jms activemq

我正在调查使用ActiveMQ作为我的嵌入式进程内消息队列 应用程序,但我有点坚持我如何开始这样的应用程序 起来。我想象它(当然是伪代码):

configureBroker ()
broker.start ()

createProducer (broker)
producer.start ()

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

waitForSignal ()
signalProducerShutdown ()

waitForEmptyQueues ()
signalConsumerShutdown ()

broker.stop ()

我试图组装一个简单的版本,但我仍然坚持如何写 生产者和消费者以使他们永远工作的方式,或者 直到告诉退出。做这个的最好方式是什么?我特别谈到线程方面;我需要/想要在自己的线程中产生什么......等等。

我对基于消息队列的应用程序完全不熟悉,所以请详细说明您的示例。

1 个答案:

答案 0 :(得分:3)

指定ActiveMQConnectionFactory时,可以指定“vm://”,其中name是代理的intra-vm特定名称,它将在VM中启动代理。

例如,

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

从那里,您可以创建您的生产者或消费者,就像通过网络一样。只要您为代理使用相同的名称,就可以让多个线程/代码打开/与同一个VM实例通信。

此解决方案仅允许与VM通信,它不会打开任何外部端口。我假设你正在寻找这个,因为你说你想要嵌入式的进程中队列。