作者:Genesis Gaming | 来源:互联网 | 2023-08-28 18:25
com.sharp.mq.test.SGMessageListenerContainer(org.springframework.jms.listener.DefaultMessageListener
com.sharp.mq.test.SGMessageListenerContainer(org.springframework.jms.listener.DefaultMessageListenerContainer的子类,继承是为了做异常处理)
connectionFactory --连接工厂,用于连接队列管理器(JNDI)
destination --连接某个队列(JNDI)
messageListener --消息监听,用于接口消息 (自定义类)
SGMessageListenerContainer:
package com.sharp.mq.accept;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import org.springframework.jms.listener.DefaultMessageListenerContainer;
public class SGMessageListenerContainer extends DefaultMessageListenerContainer
{
public SGMessageListenerContainer()
{
}
protected boolean receiveAndExecute(Session session, MessageConsumer consumer)
throws JMSException
{
boolean messageReceived = false;
try
{
messageReceived = super.receiveAndExecute(this, session, consumer);
}
catch(Throwable e)
{
handleException(e);
}
return messageReceived;
}
protected void handleListenerException(Throwable ex)
{
super.handleListenerException(ex);
handleException(ex);
}
private void handleException(Throwable e)
{
}
}
MQReceive :
package com.sharp.mq.accept;
public class MQReceive extends SGMessageListener
{
@Override
public void processMessage(String s)
{
System.out.println(s);
}
}
SGMessageListener :
package com.sharp.mq.accept;
import javax.jms.Message;
import javax.jms.MessageListener;
import org.springframework.jms.support.converter.MessageConverter;
public abstract class SGMessageListener implements MessageListener
{
public SGMessageListener()
{
}
public void setJmsConverter(MessageConverter jmsConverter)
{
this.jmsCOnverter= jmsConverter;
}
public void onMessage(Message message)
{
try
{
String xml = (String)jmsConverter.fromMessage(message);
processMessage(xml);
}
catch(Throwable e)
{
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
}
public abstract void processMessage(String s);
private MessageConverter jmsConverter;
}
JNDI配置:
jms/qm_scsdev
wmq.jmsra.rar
javax.jms.ConnectionFactory
CH_SCS_SVRCONN
localhost
1414
QM_SCSDEV
CLIENT
1381
25
qu_asuraexp_msg_in
jboss.jca:service=RARDeployment,name='wmq.jmsra.rar'
javax.jms.Queue
baseQueueManagerName=QM_SCSDEV
baseQueueName=QU_ASURAEXP_MSG_IN
CCSID=1381
qu_scs_coupon_out
jboss.jca:service=RARDeployment,name='wmq.jmsra.rar'
javax.jms.Queue
baseQueueManagerName=QM_SCSDEV
baseQueueName=QU_SCS_COUPON_OUT
CCSID=1381
发送消息篇
com.sharp.mq.accept.AsyncJMSAdapter()
jmsTemplate jms模板
sendQueue 发送对列(JNDI)
converter 消息转换(自定义消息转换器)
IJMSAdapter:
package com.sharp.mq.send;
import java.util.Map;
public interface IJMSAdapter
{
public abstract Object send(MQQueueConstant.SEND_QUEUE sendQueue, Object obj)
throws MQException;
public abstract Object send(MQQueueConstant.SEND_QUEUE sendQueue, Object obj, String s)
throws MQException;
public abstract Object send(MQQueueConstant.SEND_QUEUE sendQueue, Object obj, Map map)
throws MQException;
public abstract Object send(MQQueueConstant.SEND_QUEUE sendQueue, Object obj, String s, Map map)
throws MQException;
}
SendJMSAdapter:
package com.sharp.mq.send;
import java.util.Map;
import javax.jms.JMSException;
import javax.jms.Message;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.core.MessagePostProcessor;
import com.sharp.common.utils.xml.XmlTools;
public class SendJMSAdapter implements IJMSAdapter
{
public Object send(MQQueueConstant.SEND_QUEUE sendQueue, Object to)
throws MQException
{
String xml = XmlTools.objectToXml(to);
jmsTemplate.convertAndSend(sendQueue.getQueue(), xml);
return null;
}
public Object send(MQQueueConstant.SEND_QUEUE sendQueue, Object to, String correlationID)
throws MQException
{
return send(sendQueue,to, correlationID, null);
}
public Object send(MQQueueConstant.SEND_QUEUE sendQueue, Object to, Map header)
throws MQException
{
return send(sendQueue,to, null, header);
}
public Object send(MQQueueConstant.SEND_QUEUE sendQueue, Object to, final String correlationID, final Map header)
throws MQException
{
String xml = XmlTools.objectToXml(to);
jmsTemplate.convertAndSend(sendQueue.getQueue(), xml, new MessagePostProcessor()
{
@Override
public Message postProcessMessage(Message arg0) throws JMSException
{
return arg0;
}
});
return null;
}
public void setJmsTemplate(JmsTemplate jmsTemplate)
{
this.jmsTemplate = jmsTemplate;
}
private JmsTemplate jmsTemplate;
}
放置wmq.jmsra-ds.xml文件和wmq.jmsra.rar文件在D:\JBoss-4.2-scs\server\default\deploy\jms 目录内
更新jar 包:
更新 jboss_home\server\default\lib,需更新以下jar包
com.ibm.mqetclient.jar
jms.jar
jta-1.1.jar
jta-spec1_0_1.jar
ojdbc14.jar
JBoss相关jar包删除
把jboss-**\server\default(或者其它选择部署的目录)\lib下的hibernate*.jar删除(一般为以下列表的5个)
删除包列表:
hibernate3.jar
hibernate-annotations.jar
hibernate-commons-annotations.jar
hibernate-entitymanager.jar
hibernate-validator.jar