Sping集積activeMQプレゼンテーションqueueとtopicモード、持続化
13115 ワード
本明細書のソース:https://download.csdn.net/download/qq_23009109/10605210
Activemqサーバを含んで、すでにデータベースを構成して、説明によって自分のmysqlデータベースのアドレス、ユーザー名とパスワードを変えて、queueを含んで、topicは持続化します
ステップ1:
一、activemq公式サイトをダウンロードする:http://activemq.apache.org/download.html
二、ActiveMQ 5.15.5 releaseをクリックして、私が選んだのはlinuxバージョンで、解凍してサーバーに置いて番号について
三、解凍後binディレクトリに入り、activemqを起動し、コマンドを起動する./activemq start
四、起動は上図のように、ブラウザが開く、入力するhttp://172.18.58.25:8161/admin/(172.18.58.25は私のサーバーです.あなた自身に変えればいいです.以下、私はすべて説明しません).次の図のように、activemqは正常に起動しました.
ステップ2:
一、生産メッセージの作成
spring activemqを構成する.xml、(ここではspringmvc,web.xmをどのように構成するかは説明しませんが、後でソースコードをアップロードします)
brokerURL="を変更tcp://172.18.58.25:61616",
ステップ3
queue送信ツールクラスの作成
package com.activemq.queue;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Component;
/**
*
* @author liang
* @description ,
*
*/
@Component("queueSender")
public class QueueSender {
@Autowired
@Qualifier("jmsQueueTemplate")
private JmsTemplate jmsTemplate;// @Qualifier bean
/**
* ( )
* @param queueName
* @param message
*/
public void send(String queueName,final String message){
jmsTemplate.send(queueName, new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage(message);
}
});
}
}
topic送信ツールクラスの作成
package com.activemq.topic;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Session;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessageCreator;
import org.springframework.stereotype.Component;
/**
*
* @author liang
* @description Topic Topic
*
*/
@Component("topicSender")
public class TopicSender {
@Autowired
@Qualifier("jmsTopicTemplate")
private JmsTemplate jmsTemplate;
/**
* ( )
* @param queueName
* @param message
*/
public void send(String topicName,final String message){
jmsTemplate.send(topicName, new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage(message);
}
});
}
}
メッセージコード送信事例
package com.activemq.controller;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.activemq.queue.QueueSender;
import com.activemq.topic.TopicSender;
/**
*
* Chinese:
* English: Login
* ClassName: LoginController
* date: 2018 7 25 3:33:54
* @author Mortal
* @since JDK 1.8
*/
@Controller
@RequestMapping("/login")
public class LoginController extends BaseController{
@Resource
QueueSender queueSender;
@Resource
TopicSender topicSender;
@RequestMapping(value = "/queueSender", method = RequestMethod.GET)
public @ResponseBody String queueSender(HttpServletRequest request) {
try {
queueSender.send("test.queue2", request.getParameter("message"));
} catch (Exception e) {
}
return "ok";
}
/**
*
* Topic : ,
*
* @param message
* @return String
*/
@ResponseBody
@RequestMapping("topicSender")
public String topicSender(@RequestParam("message")String message){
try {
topicSender.send("test.topic2", message);
} catch (Exception e) {
}
return "ok";
}
}
次に受信メッセージを作成します
作成sping-activemq
Queueキューリスナー1
package com.activemq.queue;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import org.springframework.stereotype.Component;
/**
*
* @author liang
* @description
*
*/
@Component
public class QueueReceiver1 implements MessageListener {
@Override
public void onMessage(Message message) {
try {
System.out.println("QueueReceiver1 :"+((TextMessage)message).getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
topicリスナー
package com.activemq.topic;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import org.springframework.stereotype.Component;
/**
*
* @author liang
* @description Topic
*
*/
@Component
public class TopicReceiver1 implements MessageListener{
@Override
public void onMessage(Message message) {
try {
System.out.println("TopicReceiver1 :"+((TextMessage)message).getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}