JMSを使用してメッセージをキューに入れています。JMSロードバランシング(1キュー、2キュー接続ファクトリー、1バインディング)
キューは、2つのQueueConnectionファクトリと2つのキューマネージャにリンクされています。 メッセージをキューに送信する際に、2つの異なるキュー接続ファクトリを介して2つの異なるキューマネージャに均等にメッセージを配信/送信したいと考えています。
例:時間の異なる時点で
、 私のサービスは、いくつかのuser.Iからのメッセージが均等に2 QCF/QueueManagersにメッセージを配置する必要があり受け取ります。
私は1st QCF1/Queue Managerに送信する必要があり、別のmsgが私のサービスに到着した場合は、2番目のQCF1/Queue Managerに送信する必要があります。
JMSを使用すると、一度に1つのQCFのヘルプを使用してQueue Coontionを作成できます。
これはJMSを使用して達成できますか?これを達成するための他の方法ですか? 1 QCFを使用してキューにメッセージを送信するために
アプローチ:
import javax.naming.InitialContext;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.QueueSession;
import javax.jms.QueueSender;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
public class Receiver
{
@Resource(lookup = "jms/ConnectionFactory1")
private static QueueConnectionFactory connectionFactory1;
@Resource(lookup = "jms/ConnectionFactory2")
private static QueueConnectionFactory connectionFactory2;
@Resource(lookup = "jms/Queue")
private static Queue queue;
public void readQueueMessages() {
try {
// create a queue connection
QueueConnection queueConn = connectionFactory1.createQueueConnection();
// create a queue session
QueueSession queueSession = queueConn.createQueueSession(true, 0);
// create a queue receiver
QueueSender queueSender = queueSession.createSender(queue);
TextMessage msg = queueSession.createTextMessage();
// start the connection
queueConn.start();
msg.setText("Hi");
queueSender.send(msg);
queueSender.close();
queueSession.close();
queueConn.close();
}
} catch(JMSException exp) {
// Handle this exception
} finally {
if(queueConn != null) {
// close the queue connection
queueConn.close();
}
}
}
}