com.alibaba.rocketmq.client.producer.TransactionMQProducer Java Examples
The following examples show how to use
com.alibaba.rocketmq.client.producer.TransactionMQProducer.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: TransactionProducer.java From reading-and-annotate-rocketmq-3.4.6 with GNU General Public License v3.0 | 5 votes |
public static void main(String[] args) throws MQClientException, InterruptedException { //事务决断处理类 TransactionCheckListener transactionCheckListener = new TransactionCheckListenerImpl(); TransactionMQProducer producer = new TransactionMQProducer("please_rename_unique_group_name"); producer.setCheckThreadPoolMinSize(2); producer.setCheckThreadPoolMaxSize(2); producer.setCheckRequestHoldMax(2000); producer.setTransactionCheckListener(transactionCheckListener); producer.start(); String[] tags = new String[] { "TagA", "TagB", "TagC", "TagD", "TagE" }; TransactionExecuterImpl tranExecuter = new TransactionExecuterImpl(); for (int i = 0; i < 100; i++) { try { Message msg = new Message("TopicTest", tags[i % tags.length], "KEY" + i, ("Hello RocketMQ " + i).getBytes()); SendResult sendResult = producer.sendMessageInTransaction(msg, tranExecuter, null); System.out.println(sendResult); Thread.sleep(10); } catch (MQClientException e) { e.printStackTrace(); } } for (int i = 0; i < 100000; i++) { Thread.sleep(1000); } producer.shutdown(); }
Example #2
Source File: MqProducer.java From RocketMqCurrencyBoot with Apache License 2.0 | 5 votes |
@PostConstruct private void init() throws MQClientException { if (transaction == null || transactionExecuter == null) { DefaultMQProducer defaultProducer = new DefaultMQProducer(); // Producer 组名, 多个 Producer 如果属于一 个应用,发送同样的消息,则应该将它们 归为同一组 defaultProducer.setProducerGroup(ProducerGroupName); // Name Server 地址列表 defaultProducer.setNamesrvAddr(NamesrvAddr); // 生产者名称 defaultProducer.setInstanceName(InstanceName); // 超时时间 defaultProducer.setSendMsgTimeout(SendMsgTimeout); defaultProducer.start(); producer = defaultProducer; } else { TransactionMQProducer transactionProducer = new TransactionMQProducer(); // Producer 组名, 多个 Producer 如果属于一 个应用,发送同样的消息,则应该将它们 归为同一组 transactionProducer.setProducerGroup(ProducerGroupName); // Name Server 地址列表 transactionProducer.setNamesrvAddr(NamesrvAddr); // 生产者名称 transactionProducer.setInstanceName(InstanceName); // 超时时间 transactionProducer.setSendMsgTimeout(SendMsgTimeout); transactionProducer.setCheckThreadPoolMinSize(checkThreadPoolMinSize); transactionProducer.setCheckThreadPoolMaxSize(checkThreadPoolMaxSize); transactionProducer.setCheckRequestHoldMax(checkRequestHoldMax); transactionProducer.setTransactionCheckListener(transaction); transactionProducer.start(); producer = transactionProducer; } }
Example #3
Source File: TransactionProducer.java From RocketMQ-Master-analyze with Apache License 2.0 | 5 votes |
public static void main(String[] args) throws MQClientException, InterruptedException { TransactionCheckListener transactionCheckListener = new TransactionCheckListenerImpl(); TransactionMQProducer producer = new TransactionMQProducer("please_rename_unique_group_name"); // 事务回查最小并发数 producer.setCheckThreadPoolMinSize(2); // 事务回查最大并发数 producer.setCheckThreadPoolMaxSize(2); // 队列数 producer.setCheckRequestHoldMax(2000); producer.setTransactionCheckListener(transactionCheckListener); producer.start(); String[] tags = new String[] { "TagA", "TagB", "TagC", "TagD", "TagE" }; TransactionExecuterImpl tranExecuter = new TransactionExecuterImpl(); for (int i = 0; i < 100; i++) { try { Message msg = new Message("TopicTest", tags[i % tags.length], "KEY" + i, ("Hello RocketMQ " + i).getBytes()); SendResult sendResult = producer.sendMessageInTransaction(msg, tranExecuter, null); System.out.println(sendResult); Thread.sleep(10); } catch (MQClientException e) { e.printStackTrace(); } } for (int i = 0; i < 100000; i++) { Thread.sleep(1000); } producer.shutdown(); }
Example #4
Source File: MqProducer.java From RocketMqCurrencyBoot with Apache License 2.0 | 4 votes |
/** * 发送数据到MQ方法 * * @param Topic 队列名称 * @param Tags 标签名称 * @param body 发送的数据 推荐 JSOM 或者 XML 结构 * @param Encoding 数据编码格式 默认UTF-8 * @return 响应信息进行了内部处理 确认已经保存到 MQ 并且 日志已经记录 只要值不是NULL 就是成功发送 * @throws UnsupportedEncodingException 转换字符集出错 请检查是否可以转换 */ public SendResult send(String Topic, String Tags, String body, String Encoding) throws UnsupportedEncodingException { String loggerString = MessageFormat.format( "将要发送到Mq的数据 Topic={0} Tags={1} body={2} Encoding={3} ", Topic, Tags, body, Encoding); if (Encoding == null || "".equals(Encoding)) { Encoding = "UTF-8"; } if (Tags == null || "".equals(Tags)) { Tags = "*"; } LOGGER.info(loggerString); Message me = new Message(); // 标示 me.setTopic(Topic); // 标签 me.setTags(Tags); // 内容 me.setBody(body.getBytes(Encoding)); // 发送信息到MQ SendResult 是当前发送的状态 官方说 不出异常 就是成功 SendResult sendResult = null; try { if (producer instanceof TransactionMQProducer) { sendResult = ((TransactionMQProducer) producer).sendMessageInTransaction(me, transactionExecuter, null); } else { sendResult = ((DefaultMQProducer) producer).send(me); } } catch (Exception e) { LOGGER.error(" 发送 数据给MQ出现异常 " + loggerString, e); } // 当消息发送失败时如何处理 getSendStatus 获取发送的状态 if (sendResult == null || sendResult.getSendStatus() != SendStatus.SEND_OK) { LOGGER.info(loggerString + "发送消息失败" + " MQ状态值 SendResult=" + sendResult); sendResult = null; } LOGGER.info("发送到MQ成功" + sendResult); return sendResult; }