永发信息网

spring jms 不用监听怎么获取返回消息

答案:2  悬赏:50  手机版
解决时间 2021-03-28 15:55
  • 提问者网友:却不属于对方
  • 2021-03-27 15:29
spring jms 不用监听怎么获取返回消息
最佳答案
  • 五星知识达人网友:雪起风沙痕
  • 2021-03-27 16:03
Java代码 类似于这样,把你的消息监听器放到监听器容器里面,通过“concurrentConsumers”设置并发的监听器数。
全部回答
  • 1楼网友:酒者煙囻
  • 2021-03-27 17:06
在调用JMS消息消费者的receive()方法接收消息时,调用线程在消息可用之前一直阻塞。该线程出了等待还是等待,无所事事。这样的消息接收是同步消息接收,因为只用等到消息到达才能接收线程的工作。
有同步的消息接收就有异步的消息接收,异步的消息接收就是注册一个消息监听器,该消息监听器必须实现javax.jms.MessageListener接口,当消息到达时将调用onMessage()方法,以消息作为方法的参数。

public class MailMessageListener implements MessageListener {
private MessageConverter messageConverter;

public void onMessage(Message msg) {
try {
System.out.println("on message:" + messageConverter.fromMessage(msg));
} catch (JMSException e) {
}
}

public void setMessageConverter(MessageConverter messageConverter) {
this.messageConverter = messageConverter;
}
}
Spring 中提供了多种消息监听器的容器,常用的容器有SimpleMessageListenerContainer 和DefaultMessageListenerContainer。SimpleMessageListenerContainer 是一个最简单的容器,不提供事务的支持,DefaultMessageListenerContainer是默认的容器实现,支持事务。

public class ToStringBase {

@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
}
定义一个基本的对象

public class Mail extends ToStringBase {

private String mailId;
private String from;
private String to;
private String content;

public String getMailId() {
return mailId;
}

public void setMailId(String mailId) {
this.mailId = mailId;
}

public String getFrom() {
return from;
}

public void setFrom(String from) {
this.from = from;
}

public String getTo() {
return to;
}

public void setTo(String to) {
this.to = to;
}

public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯