Java中間メッセージActiveMQ使用例
まず、私たちはなぜこれを使うのですか?
例えば、私たちは今このような問題を解決します。
このように、私達は中間のニュースルームを使います。
じゃ、中間メッセージとは何かを話しましょう。
メッセージング機構/メッセージキューのミドルウェア技術を用いて、分散システムでの統合のためにデータ交流を行う。
JavaではJmsが定義されています。これはJavaメッセージの統一インターフェースです。ActiveMqとは何ですか?これはこのインターフェースの実現です。データベース接続ドライバと同じです。メーカーによって異なる実現があります。コードの使い方を早く見てみましょう。
メッセージは全部で2種類の受信と発送の形式があります。ポイントマッチとレビューモード、つまり「一対一」と「一対多」です。
1.パッケージ(maven):
ニュースプロバイダ
前のステップは同じです。全部接続を作るのです。第6ステップだけが違っています。作成したのは消費者です。
ニュースプロバイダ
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
例えば、私たちは今このような問題を解決します。
このように、私達は中間のニュースルームを使います。
じゃ、中間メッセージとは何かを話しましょう。
メッセージング機構/メッセージキューのミドルウェア技術を用いて、分散システムでの統合のためにデータ交流を行う。
JavaではJmsが定義されています。これはJavaメッセージの統一インターフェースです。ActiveMqとは何ですか?これはこのインターフェースの実現です。データベース接続ドライバと同じです。メーカーによって異なる実現があります。コードの使い方を早く見てみましょう。
メッセージは全部で2種類の受信と発送の形式があります。ポイントマッチとレビューモード、つまり「一対一」と「一対多」です。
1.パッケージ(maven):
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
<version>5.13.4</version>
</dependency>
2.書き込みを開始します。提供者(送信者)と消費者(受信者)は二つの異なる項目です。まず普通のmavenプロジェクトを作成します。ウェブプロジェクトのポイントマッチの方式ではありません。ニュースプロバイダ
public static void main(String[] args) throws JMSException {
// , activeMQ
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");
//2.
Connection connection = connectionFactory.createConnection();
//3.
connection.start();
//4. session( )
/*
arg0
arg1
*/
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
//5. ,
Queue firstQueue = session.createQueue("firstQueue");
//6.
// Destination destination = ;//
MessageProducer producer = session.createProducer(firstQueue);
//7.
TextMessage textMessage = session.createTextMessage(" ");
//8.
producer.send(textMessage);
//9.
producer.close();
session.close();
connection.close();
}
ニュース消費者前のステップは同じです。全部接続を作るのです。第6ステップだけが違っています。作成したのは消費者です。
public static void main(String[] args) throws JMSException, IOException {
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");
//2.
Connection connection = connectionFactory.createConnection();
//3.
connection.start();
//4. session( )
/*
arg0
arg1
*/
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
//5. ,
Queue firstQueue = session.createQueue("firstQueue");
//6.
MessageConsumer consumer = session.createConsumer(firstQueue);
//7.
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
TextMessage textMessage = (TextMessage)message;
try {
System.out.println(" "+textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
//8.
//
System.in.read();
//9.
consumer.close();
session.close();
connection.close();
}
定期購読モードをリリースする(メッセージを発表した後、前に実行していた消費者だけが受信できます。メッセージはいずれの消費者に消費された後、起動した消費者は前のメッセージを消費できません。)ニュースプロバイダ
//
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");
//2.
Connection connection = connectionFactory.createConnection();
//3.
connection.start();
//4. session( )
/*
arg0
arg1
*/
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
//5
Topic topic = session.createTopic("first-topic");
//6.
// Destination destination = ;//
MessageProducer producer = session.createProducer(topic);
//7.
TextMessage textMessage = session.createTextMessage(" ");
//8.
producer.send(textMessage);
//9.
producer.close();
session.close();
connection.close();
消費者
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://192.168.25.180:61616");
//2.
Connection connection = connectionFactory.createConnection();
//3.
connection.start();
//4. session( )
/*
arg0
arg1
*/
Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
//5
Topic topic = session.createTopic("first-topic");
//6.
MessageConsumer consumer = session.createConsumer(topic);
//7.
consumer.setMessageListener(new MessageListener() {
@Override
public void onMessage(Message message) {
TextMessage textMessage = (TextMessage)message;
try {
System.out.println(" "+textMessage.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
});
//8.
//
System.in.read();
//9.
consumer.close();
session.close();
connection.close();
まとめてみると、上のコードは全部似ていますか?Springで管理できます。以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。