JMS - 它是如何工作的?

时间:2017-03-06 13:30:02

标签: java spring jms spring-jms

如果我想从JMS发送和接收消息,我不知道我该做什么。经过一段时间,我看,我可以运行ActiveMQ服务器。但它太难了。它在Java代码下工作吗?

即。我有这个接收器和Spring的设置:

<context:component-scan base-package="ru.mrchebik.receiver" />

<bean id="receiver"
      class="ru.mrchebik.receiver.service.AlertService"/>

<amq:connectionFactory id="connectionFactory"
                       brokerURL="tcp://127.0.0.1:61615"/>

<amq:queue id="exampleQueue" physicalName="example.alert.queue" />

<bean id="jmsTemplate"
      class="org.springframework.jms.core.JmsTemplate"
      c:_0-ref="connectionFactory"
      p:defaultDestinationName="example.alert.queue" />

<jms:listener-container>
    <jms:listener destination="example.alert.queue"
                  ref="receiver"
                  method="retrieveExampleAlert" />
</jms:listener-container>

这是Spring的发件人设置:

<context:component-scan base-package="ru.mrchebik.sender" />

<bean id="sender"
      class="ru.mrchebik.sender.service.AlertService"/>

<amq:connectionFactory id="connectionFactory"
                       brokerURL="tcp://127.0.0.1:61615"/>

<bean id="jmsTemplate"
      class="org.springframework.jms.core.JmsTemplate"
      c:_0-ref="connectionFactory"
      p:defaultDestinationName="example.alert.queue" />

所以,我有简单的方法,其发送和接收消息

得到:

public void retrieveExampleAlert(Example example) {
    System.out.println(example);
}

发送:

@Autowired
private JmsOperations jmsOperations;

public void sendExampleAlert(Example example) {
    System.out.println("sending...");
    jmsOperations.convertAndSend(example);
    System.out.println("end");
}

在主要类中,我告诉发件人 - sendExampleAlert使用Example的对象,接收者 - 简单地创建一个bean。

但我也确实遇到了端口和访问它们的问题。我使用Mageia 5并试图打开端口,但它们从以下位置看不到:

netstat -t
netstat -ntulp

我也有许多例外,即:

  

JMS消息侦听器调用程序的设置失败,目的地为“example.alert.queue” - 尝试恢复。原因:由于先前的异常而处置

(尝试使用打开程序中的另一个端口)

  

原因:无法发送,频道已失败:tcp://127.0.0.1:63342

但是,如果我想连接非开放端口,我经常会遇到此异常:

  

ConnectException:拒绝连接

感谢。

0 个答案:

没有答案