我创建了一个JMS项目,包括客户端和服务器。我的客户端是一个简单的Java应用程序&服务器是一个Web应用程序。虽然我使用客户端发送消息,但我在服务器上收到错误。
2014-03-12 17:00:52,991 WARN [org.hornetq.core.protocol.core.impl.RemotingConnectionImpl](hornetq-failure-check-thread)检测到连接失败:未从/接收数据10.1.20.219:63869。客户端可能在未关闭其连接的情况下退出或崩溃,或者服务器与客户端之间的网络出现故障。您也可能错误地配置了connection-ttl和client-failure-check-period。请查看用户手册以获取更多信息。现在将关闭连接。 [代码= 3] 2014-03-12 17:00:52,994 WARN [org.hornetq.core.server.impl.ServerSessionImpl](hornetq-failure-check-thread)客户端连接失败,清除会话7ccb43c0-a9d9-11e3-8873-的资源0024e8c8aec3 2014-03-12 17:00:52,995 WARN [org.hornetq.core.server.impl.ServerSessionImpl](hornetq-failure-check-thread)清除会话资源7ccb43c0-a9d9-11e3-8873-0024e8c8aec3 *
客户端发送的所有消息都出现在队列中。但我的MDB bean没有响应。请帮忙。
Bean代码
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.*;
/**
* Created by manodyas on 3/12/14.
*/
@MessageDriven(mappedName = "MsgBean.java", activationConfig = {
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination",propertyValue = "/queue/TestABC"),
@ActivationConfigProperty(propertyName = "clientFailureCheckPeriod", propertyValue = "600000"),
@ActivationConfigProperty(propertyName = "connectionTTL", propertyValue = "-1")
})
//@MessageDriven(activationConfig = {@ActivationConfigProperty(propertyName = "destinationType",propertyValue = "javax.jms.Queue"),@ActivationConfigProperty(propertyName = "destination",propertyValue = "queue/TestABC") })
class MsgBean implements MessageListener{
public MsgBean()
{
}
public void onMessage(Message message)
{
System.out.println("test");
if (message instanceof TextMessage)
{
System.out.println("Order Accepted...!!");
}
else
{
System.out.println("Other..");
}
}
}
答案 0 :(得分:0)
你可以尝试一些事情(我现在无法测试你的特定代码,所以我不确定这是否会对你有帮助)。如果您可以测试下面的2条建议并将结果报告给我们,那将不胜感激。
配置/添加Extensios元素
在元素内添加扩展元素<extension module="org.jboss.as.messaging"/>
。
配置ClientFailureCheckPeriod和TTL参数(尝试不仅在MDB中配置)
如果客户端没有收到客户端故障检查周期毫秒的任何数据包,那么它将认为连接失败并将启动故障转移,或调用任何SessionFailureListener实例(如果您使用JMS,则调用ExceptionListener实例)取决于它的配置方式。
对于JMS,检查周期由HornetQConnectionFactory实例上的ClientFailureCheckPeriod属性定义。如果JMS连接工厂实例直接部署到服务器端的JNDI中,则可以使用参数client-failure-在JBOSS_DIST / jboss-as / server // deploy / hornetq / hornetq-jms.xml配置文件中指定它。检查周期。
客户端故障检查周期的默认值为30000毫秒(30秒)。值-1表示如果没有从服务器接收数据,客户端将永远不会在客户端连接失败。通常,这远低于连接TTL值,以允许客户端在发生暂时性故障时重新连接。
另一种方法是使用MDB中的注释来配置它(我可以在你的代码中看到你已经这样做了)
@ActivationConfigProperty(propertyName = "clientFailureCheckPeriod", propertyValue = "600000")
@ActivationConfigProperty(propertyName = "connectionTTL", propertyValue = "-1")
您可以尝试的其他参数:
call-failover-timeout The timeout to use when fail over is in process (in ms).**
Attribute Value
Default Value -1
Type LONG
Nillable true
Expressions Allowed true
failover-on-initial-connection True to fail over on initial connection.
Attribute Value
Default Value false
Type BOOLEAN
Nillable true
Expressions Allowed
reconnect-attempts The reconnect attempts.
Attribute Value
Default Value 0
Type INT
Nillable true
Expressions Allowed true
retry-interval The retry interval.
Attribute Value
Default Value 2000
Type LONG
Nillable true
Expressions Allowed true
<强>来源:强>