Spring Boot整合JMS
- 首先在Linux安装好ActiveMQ,再启动ActiveMQ。
- 创建Spring Boot项目
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
spring.activemq.broker-url=tcp://192.168.2.128:61616
spring.activemq.packages.trust-all=true
spring.activemq.user=admin
spring.activemq.password=admin
- 在项目中配置一个消息队列Bean,该Bean得实例就由ActiveMQ提供
@SpringBootApplication
public class JmsApplication {
public static void main(String[] args) {
SpringApplication.run(JmsApplication.class, args);
}
@Bean
Queue queue(){
return new ActiveMQQueue("amq");
}
}
@Component
public class JmsComponent {
@Autowired
JmsMessagingTemplate jmsMessagingTemplate;
@Autowired
Queue queue;
public void send(Message msg){
jmsMessagingTemplate.convertAndSend(this.queue,msg);
}
@JmsListener(destination = "amq")
public void receive(Message msg){
System.out.println("receive:"+msg);
}
}
public class Message implements Serializable {
private String content;
private Date date;
}
@SpringBootTest
class JmsApplicationTests {
@Autowired
JmsComponent jmsComponent;
@Test
void contextLoads() {
Message message = new Message();
message.setContent("youyuan");
message.setDate(new Date());
jmsComponent.send(message);
}
}