Sping集積activeMQプレゼンテーションqueueとtopicモード、持続化



本明細書のソース:https://download.csdn.net/download/qq_23009109/10605210
Activemqサーバを含んで、すでにデータベースを構成して、説明によって自分のmysqlデータベースのアドレス、ユーザー名とパスワードを変えて、queueを含んで、topicは持続化します
ステップ1:
一、activemq公式サイトをダウンロードする:http://activemq.apache.org/download.html
Sping集成activeMQ演示queue和topic模式,持久化_第1张图片
二、ActiveMQ 5.15.5 releaseをクリックして、私が選んだのはlinuxバージョンで、解凍してサーバーに置いて番号について
Sping集成activeMQ演示queue和topic模式,持久化_第2张图片
三、解凍後binディレクトリに入り、activemqを起動し、コマンドを起動する./activemq start
Sping集成activeMQ演示queue和topic模式,持久化_第3张图片
四、起動は上図のように、ブラウザが開く、入力するhttp://172.18.58.25:8161/admin/(172.18.58.25は私のサーバーです.あなた自身に変えればいいです.以下、私はすべて説明しません).次の図のように、activemqは正常に起動しました.
Sping集成activeMQ演示queue和topic模式,持久化_第4张图片
 
ステップ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和topic模式,持久化_第5张图片
 
 
 
 
次に受信メッセージを作成します
 
作成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();
		}
	}
	
}