gpt4 book ai didi

java - Apache ActiveMQ 回退机制

转载 作者:行者123 更新时间:2023-11-30 04:43:13 25 4
gpt4 key购买 nike

我正在将 Apache Active MQ 与 Spring 结合使用......我面临的问题是我在一台机器上创建生产者(假设为 Machine1),而我在第二台机器(假设为 Machine2)上创建一个消费者...我通过调用一个简单的 servlet 调用在 Machine1 上创建生产者......然后在 Machine2 上创建一个消费者......我面临的问题是,无论如何假设如果我的生产者无法在指定的时间内发送任何数据包,那么我想从 Machine2 中删除我的消费者和队列...如果我在指定的时间内没有从生产者那里收到任何数据包,我是否可以将消费者和队列设置为自动删除并执行一些业务逻辑......

connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,ActiveMQConnection.DEFAULT_PASSWORD,ConnectorURL);
connection = connectionFactory.createConnection();
connection.start();
session = connection.createSession(transacted, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue(queueID+"");
connection = connectionFactory.createConnection();
connection.start();
consumer = session.createConsumer(destination);

基本上,这段代码为我的应用程序创建了消费者......然后我将此消费者分配给我的应用程序监听器,该监听器监听生产者是否向消费者发送任何消息......

ScenarioExecutionQueueListenerImpl executionQueueListener = new ScenarioExecutionQueueListenerImpl(scenario,result, host);
beanFactory.autowireBean(executionQueueListener);
connection.setExceptionListener(executionQueueListener);
Message message = consumer.receive();
consumer.setMessageListener(executionQueueListener);
executionQueueListener.setConsumer(consumer);
executionQueueListener.onMessage(message);

最佳答案

我不会为这种情况设置消息监听器,而只是使用consumer.receive()方法。 MessageListener 更适合时间独立/异步消耗。

public void run(){
Message m = consumer.receive(timeout_value_in_millisec);
if( m != null ){
// got a message, handle it.
processMessage(msg);
}else{
// no message received in specified time,
}
// close session, connection etc.
}

public void processMessage(Message msg){

}

关于java - Apache ActiveMQ 回退机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11733681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com