3

我正在研究在我的应用程序中使用 ActiveMQ 作为嵌入式进程内消息队列,但我对如何启动这样的应用程序有点困惑。我的设想是这样的(当然是伪代码):

configureBroker ()
broker.start ()

createProducer (broker)
producer.start ()

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

waitForSignal ()
signalProducerShutdown ()

waitForEmptyQueues ()
signalConsumerShutdown ()

broker.stop ()

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

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

4

1 回答 1

3

当您指定 ActiveMQConnectionFactory 时,您可以指定“vm://”,其中 name 是代理的内部虚拟机特定名称,它将在 VM 内启动代理。

例如,

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

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

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

于 2009-12-03T18:09:45.667 回答