package com.test.mq;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.client.producer.TransactionMQProducer;
import org.apache.rocketmq.common.message.Message;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import com.maihaoche.starter.mq.annotation.EnableMQConfiguration;
@SpringBootApplication
@EnableMQConfiguration
public class DemoApplication {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(DemoApplication.class, args);
System.out.println("----------------搜索服务已启动------------------");
/* DemoProducer demoProducer = applicationContext.getBean(DemoProducer.class);
Message message = new Message("test-54", "123".getBytes());
demoProducer.syncSend(message );*/
DemoTProducer2 demoProducer = applicationContext.getBean(DemoTProducer2.class);
Message message = new Message("test-transaction", "123".getBytes());
SendResult sendMessageInTransaction = demoProducer.sendMessageInTransaction(message, null);
System.out.println(sendMessageInTransaction);
System.out.println("============================");
System.exit(0);
}
}
package com.test.mq;
import java.util.Map;
import com.maihaoche.starter.mq.annotation.MQConsumer;
import com.maihaoche.starter.mq.base.AbstractMQPushConsumer;
@MQConsumer(topic = "test-transaction", consumerGroup = "local_sucloger_dev")
public class DemoConsumer extends AbstractMQPushConsumer<Object> {
@Override
public boolean process(Object message, Map extMap) {
// extMap 中包含messageExt中的属性和message.properties中的属性
System.out.println("DemoConsumer:"+message);
return true;
}
}
package com.test.mq;
import com.maihaoche.starter.mq.annotation.MQProducer;
import com.maihaoche.starter.mq.base.AbstractMQProducer;
@MQProducer
public class DemoProducer extends AbstractMQProducer{
}
package com.test.mq;
import org.apache.rocketmq.client.producer.LocalTransactionState;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.common.message.MessageExt;
import com.maihaoche.starter.mq.annotation.MQTransactionProducer;
import com.maihaoche.starter.mq.base.AbstractMQTransactionProducer;
@MQTransactionProducer(producerGroup = "test_t_my")
public class DemoTProducer2 extends AbstractMQTransactionProducer{
@Override
public LocalTransactionState executeLocalTransaction(Message msg, Object arg) {
// TODO Auto-generated method stub
System.out.println("executeLocalTransaction》》》》》》》》》》》》》》》》》");
//return LocalTransactionState.UNKNOW;
return LocalTransactionState.COMMIT_MESSAGE;
}
@Override
public LocalTransactionState checkLocalTransaction(MessageExt msg) {
// TODO Auto-generated method stub
System.out.println("checkLocalTransaction????????????????"+msg);
return LocalTransactionState.UNKNOW;
}
}
spring.rocketmq.name-server-address=10.101.16.102:9876;101.102.16.104:9876
spring.rocketmq.producer-group=local_pufang_producer
spring.rocketmq.send-msg-timeout=5000
<dependency>
<groupId>com.maihaoche</groupId>
<artifactId>spring-boot-starter-rocketmq</artifactId>
<version>0.1.0</version>
</dependency>