1,pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
</parent>
<--引入activemq的依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
2,主配置类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.jms.support.converter.MappingJackson2MessageConverter;
import org.springframework.jms.support.converter.MessageConverter;
@SpringBootApplication
/*启用jms*/
@EnableJms
public class SpringbootBasicApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootBasicApplication.class, args);
}
/*定义json类型的消息转换器*/
@Bean
public MessageConverter messageConverter(){
MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter();
/*这个必须配,不然会报空指针异常*/
converter.setTypeIdPropertyName("JMSXUserID");
return converter;
}
}
3,生产者
import com.example.springbootbasic.bean.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/*生产者*/
@RestController
public class ProductorController {
/*在JmsAutoConfiguration自动配置的*/
@Autowired
private JmsMessagingTemplate messagingTemplate;
@RequestMapping("msg")
public String index(User user){
String queue="su.topic";//队列名
messagingTemplate.convertAndSend(queue,user);
System.out.println("往"+queue+",发送了一个消息。。。");
return "消息发送成功";
}
}
4,消费者
import com.example.springbootbasic.bean.User;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
/*消费者*/
@Component
public class CustomerController {
@JmsListener(destination="su.topic")
public void index(User msg){
System.out.println("接受到消息:"+msg);
}
}