1.依赖
<!-- ActiveMQ启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
2.新增MqConfig类
package com.immo.phamacybus.config;
import javax.jms.Queue;
import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 创建MQ队列
* @author Linhai.Tan 2018-4-25
*
*/
@Configuration
public class MqConfig {
/**
* 创建一个队列,名称叫做immo
*/
@Bean
public Queue queue() {
return new ActiveMQQueue("immo");
}
}
3.新增MqService接口
package com.immo.phamacybus.service;
import javax.jms.Destination;
public interface MqService {
/**
* 往指定的队列发送消息
* @param queueName 发送到的队列
* @param msg 消息内容
*/
public void send(Destination destination,String msg);
}
4.新增MqServiceImpl实现类
package com.immo.phamacybus.service.imple;
import javax.jms.Destination;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Service;
import com.immo.phamacybus.service.MqService;
@Service
public class MqServiceImpl implements MqService {
@Autowired
private JmsMessagingTemplate jmsTemplate;
@Override
public void send(Destination destination, String msg) {
jmsTemplate.convertAndSend(destination, msg);
}
@JmsListener(destination = "immo")
@SendTo("call-immo")
public String receiveQueue(String text) {
System.out.println("收到的报文为:" + text);
return "收到消息,这是回调信息!";
}
@JmsListener(destination = "call-immo")
public void consumerMessage(String msg) {
System.out.println("接收到回调消息,内容为:"+msg);
}
}
5.测试,新增MqTest
package com.immo.test;
import javax.jms.Destination;
import org.apache.activemq.command.ActiveMQQueue;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.immo.PhamacyBusApplication;
import com.immo.phamacybus.service.MqService;
/**
* 测试MQ
* @author Linhai.Tan 2018-4-25
*
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes=PhamacyBusApplication.class)
public class MqTest {
@Autowired
private MqService mqService;
@Test
public void contextLoads() throws InterruptedException {
Destination destination = new ActiveMQQueue("immo");
for (int i = 0; i < 100; i++) {
mqService.send(destination, "这是发出的消息");
}
}
}