gpt4 book ai didi

transactions - 如何手动从队列中读取 N 条消息,或者如果在 onmessage() 方法中已经过了 Y 时间?

转载 作者:行者123 更新时间:2023-12-04 19:35:13 25 4
gpt4 key购买 nike

我希望在我的消息驱动 bean onmessage 方法中实现以下逻辑

读取 N 条消息或等待 Y 时间,以先发生者为准,然后提交事务。

如果我能得到实现此逻辑的代码示例,我将不胜感激?

T

最佳答案

类似这段代码的事情可能是你想要做的。不过,请将监听器保留给一个单一的消费者,不要并发、负载均衡一次,否则这会变得很棘手。如果您使用的是 JEE6,您可能希望通过注释注入(inject) jms 资源。如果没有

,则接收调用将阻塞等待 Y/N 时间
public void onMessage(Message msg) {

// So we got a message, let's grab the JMS resources
// Note that these could be injected as well, for convenience

InitialContext context = new InitialContext();
ConnectionFactory factory = (ConnectionFactory) context.lookup("java:comp/env/jms/connectionFactory");
Destination destination = (Destination) context.lookup("java:comp/env/jms/myQueue");
Connection connection = factory.createConnection();
connection.start();
MessageConsumer consumer = session.createConsumer(destination);
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
// TODO: handle msg here

// So, let's start look for msgs.
for (int i=0; i<N; i++) {
Message msg_i = consumer.receive(Y/N);
// Handle msg_i here.
}
consumer.close();
session.close();
connection.close();
}

关于transactions - 如何手动从队列中读取 N 条消息,或者如果在 onmessage() 方法中已经过了 Y 时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12341620/

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