MQ直连 并通过线程池ExecutorService发送消息
来源:互联网 发布:windows热键设置 编辑:程序博客网 时间:2024/06/05 19:56
</pre><p></p><p>发送MQ的消息代码段 ,MQ的消息格式代码就不贴了。线程池是通过ExecutorService来实现。</p><pre name="code" class="java">import java.io.IOException;import java.io.InputStream;import java.util.Arrays;import java.util.Properties;import javax.jms.Connection;import javax.jms.JMSException;import javax.jms.MessageProducer;import javax.jms.Queue;import javax.jms.Session;import javax.jms.TextMessage;import org.apache.log4j.Logger;import com.ibm.mq.jms.JMSC;import com.ibm.mq.jms.MQQueueConnectionFactory;public class MQSender {private static Logger log = Logger.getLogger(MQSender.class);privatestatic String hostName;private static String channel;private static int CCSID;private static int port;private static String qmName;private static String qName;private static Session session;private static Connection connection;private static Queue destination;static {Properties prop = new Properties();InputStream in = Object.class.getResourceAsStream("/mq.properties");try {prop.load(in);hostName = prop.getProperty("mq.host"); // MQ服务器的IP地址channel = prop.getProperty("mq.channel"); // MQ服务器连接的通道CCSID = Integer.getInteger(prop.getProperty("mq.ccsid")); // MQ CCSIDport = Integer.getInteger(prop.getProperty("mq.port")); // MQ 端口qmName = prop.getProperty("mq.qcfname"); // MQ的队列管理器名称qName = prop.getProperty("mq.queuename"); // MQ远程队列的名称session = null; // MQ会话connection = null; // MQ连接 destination =null;} catch (IOException e) {e.printStackTrace();}}/** * 初始化MQ 连接与会话 * * @throws JMSException */public void init() throws JMSException {MQQueueConnectionFactory factory = new MQQueueConnectionFactory();factory.setHostName(hostName);factory.setQueueManager(qmName);factory.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);factory.setChannel(channel);factory.setCCSID(CCSID);factory.setPort(port);destory();connection = factory.createConnection();connection.start();session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);destination=session.createQueue(qName);}public static void destory() throws JMSException {if (session != null) {session.close();}if (connection != null) {connection.stop();connection.close();}}/** * 发送一条文本消息 * * @param message * @throws JMSException */public void sendTextMessage(MQObject message) throws JMSException {//Queue destination = session.createQueue(qName);MessageProducer producer = session.createProducer(destination);TextMessage textMessage = session.createTextMessage();textMessage.setText(message.toString());producer.send(textMessage);System.out.println("一次发送一条消息:"+message);producer.close();}/** * 一次发送多条文本消息 * * @param messages * @throws JMSException */public static void sendTextMessage(MQObject[] messages) throws JMSException {//Queue destination = session.createQueue(qName);MessageProducer producer = session.createProducer(destination);for (MQObject message : messages) {TextMessage textMessage = session.createTextMessage();textMessage.setText(message.toString());producer.send(textMessage);}System.out.println("一次发送多条消息 :"+ Arrays.asList(messages));producer.close();}public static void main(String[] args) {new MQSender();}}
通过线程池发送消息的部分代码
public class MqMessageRunnable {private static final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");public ExecutorService executor = Executors.newFixedThreadPool(8);@Autowiredpublic MQSender mqsender;public void onMessageRun(){executor.execute(new Runnable(){@Overridepublic void run() {//MQObject mqObject = getMessage(device,result); //获取MQ消息try {mqsender.sendTextMessage(mqObject);} catch (JMSException e) {e.printStackTrace();}}});}
0 0
- MQ直连 并通过线程池ExecutorService发送消息
- 通过rabbitmq向mq中发送消息
- Android WiFi直连并完成图片双向发送
- apache mq 发送消息
- MQ发送事务消息
- MQ发送延时消息
- MQ发送定时消息
- MQ JMS发送消息并接收客户端回复
- MQ JMS发送消息并接收客户端回复
- Java使用ExecutorService线程池通过Socket传输AES加密,并在客户端用ServerSocket解密
- Android通过JDBC直连MySql
- ExecutorService(线程池)+线程
- 直连
- Android ExecutorService线程池
- ExecutorService线程池
- ExecutorService线程池
- ExecutorService线程池
- ExecutorService线程池
- Mysql 查询缓存
- (window)Android Studio安装以及Fetching android sdk component information超时的解决方案
- 第十六周 复习 问题 B: 按要求输出
- 数据结构c++ 随堂笔记4
- jsoncpp 扩展
- MQ直连 并通过线程池ExecutorService发送消息
- iOS疯狂详解之Svn基本命令
- R: 矩阵运算及常用函数 V - plyr Part I
- 双向链表的简单实现
- 使用Xcode自带的单元测试
- 如何让Canvas画笔填充满整个浏览器屏幕
- hadoop写mongodb问题记录(备忘)
- 用nmon监控Linux系统资源
- FZU2107:Hua Rong Dao(DFS)