消息发送端
消息提供端的的抽象类
public abstract class MqProvider<T> {
@Autowired
protected JmsMessagingTemplate jmsMessagingTemplate;
public abstract void publish(String destination, T object);
public ActiveMQQueue newQueueInstance(String destination) {
return new ActiveMQQueue(destination);
}
public ActiveMQTopic newTopicInstance(String destination) {
return new ActiveMQTopic(destination);
}
}
点对点模式的具体实现类
@Component
public class ActiveMQQueueProvider extends MqProvider<String> {
@Override
public void publish(String destination, String value) {
TextMessage mqTextMessage = new ActiveMQTextMessage();
try {
mqTextMessage.setText(value);
} catch (JMSException e) {
e.printStackTrace();
}
super.jmsMessagingTemplate.convertAndSend(super.newQueueInstance(destination), mqTextMessage);
}
}
顺便来个destination的常量类
public class ActiveMQQueueConstants {
public static final String QUEUE_ORDER_AUTO_TASK = "SHOP.WECHAT.ORDER.AUTO.TASK";
}
最后就是消息的发送了
@RestController
@RequestMapping("/provider")
public class ProviderController {
@Autowired
private ActiveMQQueueProvider activeMQQueueProvider;
@GetMapping("send")
public void sendMessage(String tasKId) {
activeMQQueueProvider.publish(ActiveMQQueueConstants.QUEUE_ORDER_AUTO_TASK, tasKId);
}
}
消费端
@Component
public class ConsumerService {
@JmsListener(destination = "SHOP.WECHAT.ORDER.AUTO.TASK")
@SendTo("RetQueue") //将方法的返回值传入RetQueue
public String handleMessage(String tasKId) {
System.out.println(tasKId);
return "success";
}
}