项目路径
AmqpConfig类
package com.rtsm.zhjs.background.framework.rabbitmq;
//@Configuration
public class AmqpConfig {
// public static final String FOO_EXCHANGE = "callback.exchange.foo";
// public static final String FOO_ROUTINGKEY = "callback.routingkey.foo";
// public static final String FOO_QUEUE = "callback.queue.foo";
//
// @Value("${spring.rabbitmq.addresses}")
// private String addresses;
// @Value("${spring.rabbitmq.username}")
// private String username;
// @Value("${spring.rabbitmq.password}")
// private String password;
// @Value("${spring.rabbitmq.virtual-host}")
// private String virtualHost;
// @Value("${spring.rabbitmq.publisher-confirms}")
// private boolean publisherConfirms;
//
// @Bean
// public ConnectionFactory connectionFactory() {
// CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
// connectionFactory.setAddresses(addresses);
// connectionFactory.setUsername(username);
// connectionFactory.setPassword(password);
// connectionFactory.setVirtualHost(virtualHost);
// /** 如果要进行消息回调,则这里必须要设置为true */
// connectionFactory.setPublisherConfirms(publisherConfirms);
// return connectionFactory;
// }
//
// @Bean
// /** 因为要设置回调类,所以应是prototype类型,如果是singleton类型,则回调类为最后一次设置 */
// @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
// public RabbitTemplate rabbitTemplate() {
// RabbitTemplate template = new RabbitTemplate(connectionFactory());
// return template;
// }
//
// /** 设置交换机类型 */
// @Bean
// public DirectExchange defaultExchange() {
// /**
// * DirectExchange:按照routingkey分发到指定队列
// * TopicExchange:多关键字匹配
// * FanoutExchange: 将消息分发到所有的绑定队列,无routingkey的概念
// * HeadersExchange :通过添加属性key-value匹配
// */
// return new DirectExchange(AmqpConfig.FOO_EXCHANGE);
// }
//
// @Bean
// public Queue fooQueue() {
// return new Queue(AmqpConfig.FOO_QUEUE);
// }
//
// @Bean
// public Binding binding() {
// /** 将队列绑定到交换机 */
// return BindingBuilder.bind(fooQueue()).to(defaultExchange()).with(AmqpConfig.FOO_ROUTINGKEY);
// }
}
Lister类
package com.rtsm.zhjs.background.framework.rabbitmq;
//@Configuration
//@RabbitListener(queues = AmqpConfig.FOO_QUEUE)
public class Listener {
// private static final Logger LOGGER = LoggerFactory.getLogger(Listener.class);
//
// @RabbitHandler
// public void process(@Payload String foo) {
// LOGGER.info("Listener: " + foo);
// }
}
Sender类
package com.rtsm.zhjs.background.framework.rabbitmq;
//@Component
public class Sender{
// private static final Logger LOGGER = LoggerFactory.getLogger(Sender.class);
//
// private RabbitTemplate rabbitTemplate;
//
// @Autowired
// public Sender(RabbitTemplate rabbitTemplate) {
// this.rabbitTemplate = rabbitTemplate;
// }
//
// public void send(String msg) {
// CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString());
// LOGGER.info("send: " + correlationData.getId());
// this.rabbitTemplate.convertAndSend(AmqpConfig.FOO_EXCHANGE, AmqpConfig.FOO_ROUTINGKEY, msg, correlationData);
// }
//
// /**
// * 设置回调
// * @param callback
// */
// public void setConfirmCallback(RabbitTemplate.ConfirmCallback callback){
// this.rabbitTemplate.setConfirmCallback(callback);
// }
}
Test测试类
package com.rtsm.zhjs.background.generator.rebbitMQTest;
import com.rtsm.zhjs.background.service.BjxtBjszService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class RebbitMQTest {
@Autowired
private BjxtBjszService bjxtBjszService;
@Test
public void sendRebbitMQ() {
bjxtBjszService.sendRabbitMq("send mq message");
}
@Test
public void timeTask() {
run01();
}
public void run01() {
//需要执行的业务代码
boolean flag = false;
for( int i=0;i<5;i++) {
System.out.println("执行查库操作");
if(i != 3) {
try {
//线程睡眠1秒
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}else {
break;
}
}
}
}
测试Controller
/**
* 测试rabbitmq
* @param data
* @return
*/
@GetMapping(value = "rabbitmq")
@ResponseBody
public String sendMessage(String data){
JobEntity job = new JobEntity();
job.setId(UUID.randomUUID().toString());
job.setDelaySecond(10);
job.setName("test001");
job.setJobGroup("grou001");
try {
queryManager.addSimpleJob(job,DynamicJob.class,new JobDataMap());
} catch (SchedulerException e) {
e.printStackTrace();
}
return "true";
}
/**
* 测试rabbitmq
* @return
*/
@GetMapping(value = "rabbitmqde")
@ResponseBody
public String sendMessagede(String id){
JobEntity job = new JobEntity();
job.setId(id);
job.setDelaySecond(10);
job.setName("test001");
job.setJobGroup("grou001");
queryManager.subJob(job);
return "true";
}