在maven项目pom.xml中增加相应的依赖文件;
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency>
修改application.yml配置文件
server: port: 80 spring: messages: basename: i18n/Messages,i18n/Pages jms: pub-sub-domain: false # 配置消息的类型,如果是true则表示为topic消息,如果为false表示Queue消息 activemq: user: hello # 连接用户名 password: hello # 连接密码 broker-url: tcp://activemq-server:61616 # 消息组件的连接主机信息
定义一个消息的消费者,消费者主要是进行一个监听控制,在springboot里直接使用注解进行监听;
package hello.world.microboot.consumer;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Service;
@Service
public class MessageConsumerService {
@JmsListener(destination="activemq.msg.queue")
public void receiveMessage(String text) { //
System.out.println(" *** *** " + text); }
}
随后创建一个配置程序类,定义activemq的消息发送地址,
package hello.world.microboot.config;
import javax.jms.Queue;
import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.annotation.EnableJms;
@Configuration
@EnableJms
public class ActiveMQConfig {
@Bean
public Queue queue() {
return new ActiveMQQueue("activemq.msg.queue") ;
}
}
建立消息发送者服务接口
package hello.world.microboot.producer;
public interface IMessageProducerService {
public void sendMessage(String msg) ;
}
实现接口
package hello.world.microboot.producer.impl;
import javax.annotation.Resource;
import javax.jms.Queue;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.stereotype.Service;
import rfk.sona.microboot.producer.IMessageProducerService;
@Service
public class MessageProducerServiceImpl implements IMessageProducerService {
@Resource
private JmsMessagingTemplate jmsMessagingTemplate;
@Resource
private Queue queue;
@Override
public void sendMessage(String msg) {
this.jmsMessagingTemplate.convertAndSend(this.queue, msg);
}
}
编写测试类观察消息的处理
package hello.world.microboot.test;
import javax.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import cn.mldn.microboot.StartSpringBootMain;
import cn.mldn.microboot.producer.IMessageProducerService;
@SpringBootTest(classes = StartSpringBootMain.class)
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public class TestActiveMQ {
@Resource
private IMessageProducerService messageProducer;
@Test
public void testSend() throws Exception {
for (int x = 0; x < 100; x++) {
this.messageProducer.sendMessage("sona - " + x);
}
}
}
github: https://github.com/sona0402/springboot-activemq-java.git