一、单向消息text
- 配置文件
activemq:
broker-url: tcp://127.0.0.1:61616
user: admin
password: admin
queue: ghmq
outqueue: outmq
- pom文件
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
</dependency>
- 生产者
import com.xydtech.api.config.ResultStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Service;
import org.springframework.jms.annotation.JmsListener;
import java.util.HashMap;
import java.util.Map;
@Service
public class ProuductService {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@Value("${queue}")
private String queueName;
public void sendQueue(Map<String, Object> msg){
jmsMessagingTemplate.convertAndSend(queueName,msg);
}
}
- 消费者
import com.xydtech.api.config.ResultStatus;
import lombok.extern.slf4j.Slf4j;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Component;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Component
public class CreditLogicService implements MessageListener {
@JmsListener(destination = "${queue}")
@Override
public void onMessage(Message message) {
log.info("-----------消息接收器监听器----------");
TextMessage textMessage = (TextMessage) message;
try {
String text = textMessage.getText();
log.info("监听器接受到的消息为:"+text);
} catch (JMSException e) {
e.printStackTrace();
}
}
}
- 调用
import com.xydtech.api.authorization.annotation.Authorization;
import com.xydtech.api.config.ResultStatus;
import com.xydtech.api.service.impl.ProuductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.Instant;
import java.util.HashMap;
import java.util.Map;
@RestController
public class ActivemqController {
private final ProuductService prouduct;
@Autowired
public ActivemqController(ProuductService prouduct) {
this.prouduct = prouduct;
}
@GetMapping("/send")
@Authorization(onlyGetCustomer = true)
public void sendQueue(String msg){
for(int i=0; i<10; i++){
System.out.println(i);
System.out.println(Instant.now().toString());
prouduct.sendQueue(msg);
}
System.out.println(Instant.now().toString());
prouduct.sendQueue(msg);
}
- 结果
二、双向消息text
- pom文件
同上 - 生产者
import com.xydtech.api.config.ResultStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Service;
import org.springframework.jms.annotation.JmsListener;
import java.util.HashMap;
import java.util.Map;
@Service
public class ProuductService {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@Value("${queue}")
private String queueName;
public void sendQueue(Map<String, Object> msg){
jmsMessagingTemplate.convertAndSend(queueName,msg);
}
@JmsListener(destination="${outqueue}")
public void consumerMessage(String text){
}
}
- 消费者
import com.xydtech.api.config.ResultStatus;
import lombok.extern.slf4j.Slf4j;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Component;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Component
public class CreditLogicService implements MessageListener {
@JmsListener(destination = "${queue}")
@Override
public void onMessage(Message message) {
log.info("-----------消息接收器监听器----------");
TextMessage textMessage = (TextMessage) message;
try {
String text = textMessage.getText();
log.info("监听器接受到的消息为:"+text);
} catch (JMSException e) {
e.printStackTrace();
}
}
@JmsListener(destination = "${queue}")
@SendTo("${outqueue}")
public String receiveQueue(Message message) {
System.out.println(message+"diyi");
String text="";
TextMessage textMessage = (TextMessage) message;
System.out.println(textMessage+"第二");
try {
text = textMessage.getText();
} catch (JMSException e) {
e.printStackTrace();
}
return "return message"+text;
}
}
- 调用
同上 - 结果
三、单向消息map
- pom文件
同上 - 生产者
import com.xydtech.api.config.ResultStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Service;
import org.springframework.jms.annotation.JmsListener;
import java.util.HashMap;
import java.util.Map;
@Service
public class ProuductService {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@Value("${queue}")
private String queueName;
public void sendQueue(Map<String, Object> msg){
jmsMessagingTemplate.convertAndSend(queueName,msg);
}
}
- 消费者
import com.xydtech.api.config.ResultStatus;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Component;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Component
public class CreditLogicService {
@JmsListener(destination = "${queue}")
public void readMap(Map map) {
log.info("-----------消息接收器监听器----------");
System.out.println(map);
}
}
- 调用
import com.xydtech.api.authorization.annotation.Authorization;
import com.xydtech.api.config.ResultStatus;
import com.xydtech.api.service.impl.ProuductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.Instant;
import java.util.HashMap;
import java.util.Map;
@RestController
public class ActivemqController {
private final ProuductService prouduct;
@Autowired
public ActivemqController(ProuductService prouduct) {
this.prouduct = prouduct;
}
@GetMapping("/send")
@Authorization(onlyGetCustomer = true)
public void sendQueue(String msg){
Map<String, Object> map = new HashMap<String, Object>();
map.put("msg",msg);
map.put("code",ResultStatus.SUCCESS.getCode());
System.out.println(Instant.now().toString());
prouduct.sendQueue(map);
}
}
- 结果
四、双向消息map
- pom文件
同上 - 生产者
import com.xydtech.api.config.ResultStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Service;
import org.springframework.jms.annotation.JmsListener;
import java.util.HashMap;
import java.util.Map;
@Service
public class ProuductService {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@Value("${queue}")
private String queueName;
public void sendQueue(Map<String, Object> msg){
jmsMessagingTemplate.convertAndSend(queueName,msg);
}
@JmsListener(destination="${outqueue}")
public void readMap(Map map) {
System.out.println("从out.queue队列收到的回复报文为:"+map);
}
}
- 消费者
import com.xydtech.api.config.ResultStatus;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Component;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Component
public class CreditLogicService {
@JmsListener(destination = "${queue}")
@SendTo("${outqueue}")
public Map<String, Object> readMap(Map map) {
Map<String, Object> remap = new HashMap<String, Object>();
log.info("-----------消息接收器监听器----------");
System.out.println(map);
remap.put("code",ResultStatus.SUCCESS.getCode());
return remap;
}
}
- 调用
同上 - 结果
