如果我们使用"临时队列"使用JMS请求/回复机制,那么该代码是否可扩展?
截至目前,我们不知道我们是否每秒支持100个请求,或者每秒支持1000个请求.
下面的代码是我正在考虑实现的.它以"同步"方式使用JMS.关键部分是创建"消费者"以指向为此会话创建的"临时队列"的位置.我无法弄清楚使用这种临时队列是否是一种可扩展的设计.
destination = session.createQueue("queue:///Q1");
producer = session.createProducer(destination);
tempDestination = session.createTemporaryQueue();
consumer = session.createConsumer(tempDestination);
long uniqueNumber = System.currentTimeMillis() % 1000;
TextMessage message = session
.createTextMessage("SimpleRequestor: Your lucky number today is " + uniqueNumber);
// Set the JMSReplyTo
message.setJMSReplyTo(tempDestination);
// Start the connection
connection.start();
// And, send the request
producer.send(message);
System.out.println("Sent message:\n" + message);
// Now, receive the reply
Message receivedMessage = consumer.receive(15000); // in ms or 15 seconds
System.out.println("\nReceived message:\n" + receivedMessage);
Run Code Online (Sandbox Code Playgroud)
更新:
我遇到了另一种模式,看到这个博客 的想法是使用'常规'队列进行发送和接收.但是对于"同步"调用,为了获得所需的响应(即匹配请求),您将创建一个使用"选择器"监听接收队列的消费者.
脚步:
// 1. …
Run Code Online (Sandbox Code Playgroud)