gpt4 book ai didi

java - 从队列中读取消息并将其显示给用户?

转载 作者:行者123 更新时间:2023-11-29 09:21:31 24 4
gpt4 key购买 nike

我想先知道队列中已经存在多少条消息。下面的 Browser 类将返回 Queue 中存在的消息数。现在,我希望用户输入要从队列中读取的消息数量,并只向客户端显示该数量的消息。我不想读取队列中的所有消息,而只想读取用户想要读取的那些消息。请检查代码并回复应该做什么。

public class Browser
{
public static void main(String[] args) throws Exception
{
| // get the initial context
| InitialContext ctx = new InitialContext();
|
| // lookup the queue object
| Queue queue = (Queue) ctx.lookup("queue/queue0");
|
| // lookup the queue connection factory
| QueueConnectionFactory connFactory = (QueueConnectionFactory) ctx.
| lookup("queue/connectionFactory");
|
| // create a queue connection
| QueueConnection queueConn = connFactory.createQueueConnection();
|
| // create a queue session
| QueueSession queueSession = queueConn.createQueueSession(false,
| Session.AUTO_ACKNOWLEDGE);
|
| // create a queue browser
| QueueBrowser queueBrowser = queueSession.createBrowser(queue);
|
| // start the connection
| queueConn.start();
|
| // browse the messages
| Enumeration e = queueBrowser.getEnumeration();
| int numMsgs = 0;
|
| // count number of messages
| while (e.hasMoreElements()) {
| | Message message = (Message) e.nextElement();
| | numMsgs++;
| }
|
| System.out.println(queue + " has " + numMsgs + " messages");
|
| // close the queue connection
| queueConn.close();
}
}


To read the number of messages as per user's requirements....
String NUMBER = request.getParameter("number");
.......
.......
.......
connection.start();
for (int s = 0; s <= Integer.parseInt(NUMBER); s++){
while (true){
Message m = qReceiver.receive();
if (m != null){
if (m instanceof BytesMessage){
BytesMessage bytesMessage = (BytesMessage)m;
PrintStream buffer = null;
for ( int i = 0; i < (int)bytesMessage.getBodyLength(); i++) {
buffer.append((char) bytesMessage.readByte());
}
String msg = buffer.toString().trim();

System.out.println("Reading Message: " + msg);
}else if (m instanceof TextMessage){
TextMessage textMessage = (TextMessage)m;
System.out.println("Reading message: " + textMessage.getText());
}else {
break;
}

最佳答案

我假设您使用的是 MessageListner,因此一旦出现消息,就会调用 OnMessage() 方法。在此方法中,您可以保留一个计数器,一旦该计数器达到允许的最大值,您可以调用 connection.stop() 停止使用队列中的消息。

您始终可以通过再次调用 connection.start() 来重新启动。

关于java - 从队列中读取消息并将其显示给用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6115555/

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