导航页:https://blog.csdn.net/baokx/article/details/100745165
新建springboot工程,增加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
<version>2.1.8.RELEASE</version>
</dependency>
配置文件:
server:
port: 7777
spring:
activemq:
broker-url: tcp://192.168.207.128:61616
user: admin
password: admin
jms:
pub-sub-domain: false #defalut queue topic:true
my-destination: boot-activemq-queue #boot-activemq-topic
新建配置类:
package com.baokx.boot.activemq.producer.config;
import org.apache.activemq.command.ActiveMQQueue;
import org.apache.activemq.command.ActiveMQTopic;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.stereotype.Component;
import javax.jms.Queue;
import javax.jms.Topic;
/**
* @author kexiang.bao
* @create 2019-09-18 20:17
*/
@Component
@EnableJms
public class ConfigBean {
@Value("${my-destination}")
private String myDestination;
@Bean
public Queue queue(){
return new ActiveMQQueue(myDestination);
}
@Bean
public Topic topic(){
return new ActiveMQTopic(myDestination);
}
}
新建生产者类:
package com.baokx.boot.activemq.producer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.jms.Destination;
import javax.jms.Queue;
import javax.jms.Topic;
import java.util.UUID;
/**
* @author kexiang.bao
* @create 2019-09-18 20:21
*/
@Component
public class QueueProducer {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@Autowired
private Destination queue;
// @Autowired
// private Destination topic;
public void produceMsg(){
jmsMessagingTemplate.convertAndSend(queue, "boot-produce-msg:" + UUID.randomUUID().toString().substring(0,6));
// jmsMessagingTemplate.convertAndSend(topic, "boot-produce-msg:" + UUID.randomUUID().toString().substring(0,6));
}
//每隔3秒定投
@Scheduled(fixedDelay = 3000)
public void produceMsgScheduled(){
jmsMessagingTemplate.convertAndSend(queue, "boot-produce-msg:" + UUID.randomUUID().toString().substring(0,6));
// jmsMessagingTemplate.convertAndSend(topic, "boot-produce-msg:" + UUID.randomUUID().toString().substring(0,6));
System.out.println("produceMsgScheduled send ok...");
}
}
主启动类:
package com.baokx.boot.activemq.producer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
@EnableScheduling
public class ProducerApplication {
public static void main(String[] args) {
SpringApplication.run(ProducerApplication.class, args);
}
}
测试类:
package com.baokx.boot.activemq.producer;
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.junit4.SpringRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import javax.annotation.Resource;
@SpringBootTest(classes = ProducerApplication.class)
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public class ProducerApplicationTests {
@Resource
private QueueProducer queueProducer;
@Test
public void testSend() throws Exception{
queueProducer.produceMsg();
}
}