如果我想从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:拒绝连接
感谢。