public static void main(String[] args) throws Exception { // Instantiate with a producer group name. DefaultMQProducer producer = new DefaultMQProducer(Constants.TEST_GROUP_NAME); // Launch the instance. producer.start(); for (int i = 0; i < 1000; i++) { // Create a message instance, specifying topic, tag and message body. Message msg = new Message(Constants.TEST_TOPIC_NAME, "TagA", ("Hello RocketMQ From Sentinel " + i).getBytes(RemotingHelper.DEFAULT_CHARSET) ); // Call send message to deliver message to one of brokers. SendResult sendResult = producer.send(msg); System.out.printf("%s%n", sendResult); } // Shut down once the producer instance is not longer in use. producer.shutdown(); } }
/** * Starts the producer. * * @throws MQClientException */ public void start() throws MQClientException { producer = new DefaultMQProducer(PRODUCER_GROUP_NAME); producer.setInstanceName("producer-" + System.currentTimeMillis()); producer.setNamesrvAddr(namesrvAddr); producer.start(); }
AbstractOMSProducer(final KeyValue properties) { this.properties = properties; this.rocketmqProducer = new DefaultMQProducer(); this.clientConfig = BeanUtils.populate(properties, ClientConfig.class); if ("true".equalsIgnoreCase(System.getenv("OMS_RMQ_DIRECT_NAME_SRV"))) { String accessPoints = clientConfig.getAccessPoints(); if (accessPoints == null || accessPoints.isEmpty()) { throw new OMSRuntimeException("-1", "OMS AccessPoints is null or empty."); } this.rocketmqProducer.setNamesrvAddr(accessPoints.replace(',', ';')); } this.rocketmqProducer.setProducerGroup(clientConfig.getRmqProducerGroup()); String producerId = buildInstanceName(); this.rocketmqProducer.setSendMsgTimeout(clientConfig.getOperationTimeout()); this.rocketmqProducer.setInstanceName(producerId); this.rocketmqProducer.setMaxMessageSize(1024 * 1024 * 4); this.rocketmqProducer.setLanguage(LanguageCode.OMS); properties.put(OMSBuiltinKeys.PRODUCER_ID, producerId); }
private DefaultMQProducer getAndCreateTraceProducer(RPCHook rpcHook) { DefaultMQProducer traceProducerInstance = this.traceProducer; if (traceProducerInstance == null) { traceProducerInstance = new DefaultMQProducer(rpcHook); traceProducerInstance.setProducerGroup(TraceConstants.GROUP_NAME); traceProducerInstance.setSendMsgTimeout(5000); traceProducerInstance.setVipChannelEnabled(false); // The max size of message is 128K traceProducerInstance.setMaxMessageSize(maxMsgSize - 10 * 1000); } return traceProducerInstance; }
public void start() throws MQClientException { producer = new DefaultMQProducer("BINLOG_PRODUCER_GROUP"); producer.setNamesrvAddr(config.mqNamesrvAddr); producer.start(); }
private DefaultMQProducer createProducer(RPCHook rpcHook) { if (this.producer != null) { return producer; } else { producer = new DefaultMQProducer(rpcHook); producer.setProducerGroup(Long.toString(System.currentTimeMillis())); return producer; } }
@Bean @ConditionalOnClass(DefaultMQProducer.class) @ConditionalOnMissingBean(DefaultMQProducer.class) @ConditionalOnProperty(prefix = "spring.rocketmq", value = {"nameServer", "producer.group"}) @Order(1) public DefaultMQProducer mqProducer(RocketMQProperties rocketMQProperties) { RocketMQProperties.Producer producerConfig = rocketMQProperties.getProducer(); String groupName = producerConfig.getGroup(); Assert.hasText(groupName, "[spring.rocketmq.producer.group] must not be null"); DefaultMQProducer producer = new DefaultMQProducer(producerConfig.getGroup()); producer.setNamesrvAddr(rocketMQProperties.getNameServer()); producer.setSendMsgTimeout(producerConfig.getSendMsgTimeout()); producer.setRetryTimesWhenSendFailed(producerConfig.getRetryTimesWhenSendFailed()); producer.setRetryTimesWhenSendAsyncFailed(producerConfig.getRetryTimesWhenSendAsyncFailed()); producer.setMaxMessageSize(producerConfig.getMaxMessageSize()); producer.setCompressMsgBodyOverHowmuch(producerConfig.getCompressMsgBodyOverHowmuch()); producer.setRetryAnotherBrokerWhenNotStoreOK(producerConfig.isRetryAnotherBrokerWhenNotStoreOk()); return producer; }
protected void create(boolean useTLS) { producer = new DefaultMQProducer(); producer.setProducerGroup(getProducerGroupName()); producer.setInstanceName(getProducerInstanceName()); producer.setUseTLS(useTLS); if (nsAddr != null) { producer.setNamesrvAddr(nsAddr); } }
DefaultMQAdminExt defaultMQAdminExt = new DefaultMQAdminExt(rpcHook); defaultMQAdminExt.setInstanceName(Long.toString(System.currentTimeMillis())); DefaultMQProducer defaultMQProducer = new DefaultMQProducer("ReSendMsgById"); defaultMQProducer.setInstanceName(Long.toString(System.currentTimeMillis())); if (commandLine.hasOption('u')) { String unitName = commandLine.getOptionValue('u').trim(); defaultMQProducer.setUnitName(unitName); defaultMQProducer.start(); throw new SubCommandException(this.getClass().getSimpleName() + " command failed", e); } finally { defaultMQProducer.shutdown(); defaultMQAdminExt.shutdown();
/** * 构造消息类型的轨迹数据发送器 * * @param properties 参数属性 * @throws MQClientException 消息异常 */ public AsyncTraceAppender(Properties properties) throws MQClientException { transDataList = new ArrayList<OnsTraceTransferBean>(); traceProducer = new DefaultMQProducer(); this.traceProducer.setProducerGroup(OnsTraceConstants.groupName); traceProducer.setSendMsgTimeout(5000); traceProducer.setInstanceName(properties.getProperty(OnsTraceConstants.InstanceName, String.valueOf(System.currentTimeMillis()))); String nameSrv = properties.getProperty(OnsTraceConstants.NAMESRV_ADDR); if (nameSrv == null) { TopAddressing topAddressing = new TopAddressing(properties.getProperty(OnsTraceConstants.ADDRSRV_URL)); nameSrv = topAddressing.fetchNSAddr(); } traceProducer.setNamesrvAddr(nameSrv); traceProducer.setVipChannelEnabled(false); // 消息最大大小128K int maxSize = Integer.parseInt(properties.getProperty(OnsTraceConstants.MaxMsgSize, "128000")); batchSize = Integer.parseInt(properties.getProperty(OnsTraceConstants.MaxBatchNum, "1")); traceProducer.setMaxMessageSize(maxSize - 10 * 1000); traceProducer.start(); }
public static void main(String[] args) throws Exception { DefaultMQProducer producer = new DefaultMQProducer("BatchProducerGroupName"); producer.start(); //If you just send messages of no more than 1MiB at a time, it is easy to use batch //Messages of the same batch should have: same topic, same waitStoreMsgOK and no schedule support String topic = "BatchTest"; List<Message> messages = new ArrayList<>(); messages.add(new Message(topic, "Tag", "OrderID001", "Hello world 0".getBytes())); messages.add(new Message(topic, "Tag", "OrderID002", "Hello world 1".getBytes())); messages.add(new Message(topic, "Tag", "OrderID003", "Hello world 2".getBytes())); producer.send(messages); } }
@Override public void afterPropertiesSet() throws Exception { producer = new DefaultMQProducer(producerGroup); producer.setInstanceName(instanceName); producer.setNamesrvAddr(namesrvAddr); producer.setDefaultTopicQueueNums(defaultTopicQueueNums); producer.setSendMsgTimeout(sendMsgTimeout); producer.setRetryTimesWhenSendFailed(retryTimesWhenSendFailed); producer.start(); log.info("Producer Group {} started!", producerGroup); }
@Override public void init(MQProperties rocketMQProperties) { this.mqProperties = rocketMQProperties; RPCHook rpcHook = null; if (rocketMQProperties.getAliyunAccessKey().length() > 0 && rocketMQProperties.getAliyunSecretKey().length() > 0) { SessionCredentials sessionCredentials = new SessionCredentials(); sessionCredentials.setAccessKey(rocketMQProperties.getAliyunAccessKey()); sessionCredentials.setSecretKey(rocketMQProperties.getAliyunSecretKey()); rpcHook = new ClientRPCHook(sessionCredentials); } defaultMQProducer = new DefaultMQProducer(rocketMQProperties.getProducerGroup(), rpcHook); defaultMQProducer.setNamesrvAddr(rocketMQProperties.getServers()); defaultMQProducer.setRetryTimesWhenSendFailed(rocketMQProperties.getRetries()); defaultMQProducer.setVipChannelEnabled(false); logger.info("##Start RocketMQ producer##"); try { defaultMQProducer.start(); } catch (MQClientException ex) { throw new CanalServerException("Start RocketMQ producer error", ex); } }
producer = new DefaultMQProducer(destination); producer.setVipChannelEnabled( producerProperties.getExtension().getVipChannelEnabled()); }); producer.setNamesrvAddr(rocketBinderConfigurationProperties.getNamesrvAddr()); producer.setMaxMessageSize( producerProperties.getExtension().getMaxMessageSize()); producer.start(); Optional.ofNullable(producerInstrumentation) .ifPresent(p -> p.markStartedSuccessfully());
protected void prepare() { Validate.notEmpty(options.properties, "Producer properties can not be empty"); Validate.notNull(options.selector, "TopicSelector can not be null"); Validate.notNull(options.mapper, "TupleToMessageMapper can not be null"); producer = new DefaultMQProducer(); producer.setInstanceName(UUID.randomUUID().toString()); RocketMqConfig.buildProducerConfigs(options.properties, producer); try { producer.start(); } catch (MQClientException e) { throw new RuntimeException(e); } }
private void sendMsg(final DefaultMQAdminExt defaultMQAdminExt, final DefaultMQProducer defaultMQProducer, final String msgId) throws RemotingException, MQBrokerException, InterruptedException, MQClientException { try { MessageExt msg = defaultMQAdminExt.viewMessage(msgId); if (msg != null) { // resend msg by id System.out.printf("prepare resend msg. originalMsgId=%s", msgId); SendResult result = defaultMQProducer.send(msg); System.out.printf("%s", result); } else { System.out.printf("no message. msgId=%s", msgId); } } catch (Exception e) { e.printStackTrace(); } } }
public void start(String nameSrvAddr) throws MQClientException { if (isStarted.compareAndSet(false, true)) { traceProducer.setNamesrvAddr(nameSrvAddr); traceProducer.setInstanceName(TRACE_INSTANCE_NAME + "_" + nameSrvAddr); traceProducer.start(); } this.worker = new Thread(new AsyncRunnable(), "MQ-AsyncTraceDispatcher-Thread-" + dispatcherId); this.worker.setDaemon(true); this.worker.start(); this.registerShutDownHook(); }
@Bean public DefaultMQProducer exposeProducer() throws Exception { Map<String, Object> beans = applicationContext.getBeansWithAnnotation(MQProducer.class); //对于仅仅只存在消息消费者的项目,无需构建生产者 if(CollectionUtils.isEmpty(beans)){ return null; } if(producer == null) { Assert.notNull(mqProperties.getProducerGroup(), "producer group must be defined"); Assert.notNull(mqProperties.getNameServerAddress(), "name server address must be defined"); producer = new DefaultMQProducer(mqProperties.getProducerGroup()); producer.setNamesrvAddr(mqProperties.getNameServerAddress()); producer.setSendMsgTimeout(mqProperties.getSendMsgTimeout()); producer.setSendMessageWithVIPChannel(mqProperties.getVipChannelEnabled()); producer.start(); } return producer; }
@Override public synchronized void shutdown() { if (this.started) { this.rocketmqProducer.shutdown(); } this.started = false; }
@Test public void testQueueIdBigThanQueueNum() throws Exception { int queueId = 100; sendFail = false; MessageQueue mq = new MessageQueue(topic, broker1Name, queueId); Message msg = new Message(topic, RandomUtils.getStringByUUID().getBytes()); DefaultMQProducer producer = ProducerFactory.getRMQProducer(nsAddr); producer.send(msg, mq, new SendCallback() { @Override public void onSuccess(SendResult sendResult) { } @Override public void onException(Throwable throwable) { sendFail = true; } }); int checkNum = 50; while (!sendFail && checkNum > 0) { checkNum--; TestUtils.waitForMoment(100); } producer.shutdown(); assertThat(sendFail).isEqualTo(true); }