Commit 3eb842e1 authored by suntao's avatar suntao

mq配置(one click 只在测试环境生效 mq配置同步后 会自动创建)

parent d26bdfbb
......@@ -43,6 +43,10 @@
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
......@@ -101,6 +105,11 @@
</exclusions>
</dependency>
<dependency>
<groupId>cn.quantgroup</groupId>
<artifactId>brave-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
......
package cn.quantgroup.cashloanflowboss.core.configuration.rabbitmq;
import cn.quantgroup.cashloanflowboss.core.Application;
import cn.quantgroup.cashloanflowboss.spi.rabbitmq.service.QueueService;
import cn.quantgroup.tech.brave.service.ITechRabbitBuilder;
import org.springframework.amqp.core.*;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerEndpoint;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
@Component
public class OneClickMqConfig {
@Value("${xyqb.loan.rabbitmq.connection.host}")
private String host;
@Value("${xyqb.loan.rabbitmq.connection.port}")
private int port;
@Value("${xyqb.loan.rabbitmq.connection.virtual-host}")
private String vhost;
@Value("${xyqb.loan.rabbitmq.connection.user}")
private String username;
@Value("${xyqb.loan.rabbitmq.connection.password}")
private String password;
@Value("${xyqb.loan.rabbitmq.exchange}")
private String orderExchange;
@Value("${quota_notice.one.click:one_click_quota_notice}")
private String oneClickQuotaNotice;
@Autowired
@Qualifier("techRabbitBuilder")
private ITechRabbitBuilder techRabbitBuilder;
@Bean("oneClickConnectionFactory")
public ConnectionFactory connectionFactory() {
if (Application.isDebug()) {
CachingConnectionFactory connectionFactory = new CachingConnectionFactory(host, port);
connectionFactory.setCacheMode(CachingConnectionFactory.CacheMode.CHANNEL);
connectionFactory.setChannelCacheSize(180 * 1000);
//connectionFactory.setConnectionCacheSize(1024);
connectionFactory.setUsername(username);
connectionFactory.setPassword(password);
connectionFactory.setVirtualHost(vhost);
connectionFactory.setPublisherReturns(false);
connectionFactory.setPublisherConfirms(false);
return connectionFactory;
}
return null;
}
@Bean(name = "loanOrderAmqpAdmin")
public AmqpAdmin amqpAdmin(ConnectionFactory connectionFactory) {
return new RabbitAdmin(connectionFactory);
}
@Bean(name = "loanOrderExchange")
public FanoutExchange fanoutExchange() {
return new FanoutExchange(orderExchange);
}
@Bean(name = "oneClickQuotaNotice")
public Queue loanOrderQueue() {
return new Queue(oneClickQuotaNotice);
}
@Bean(name = "loanOrderBinding")
public Binding bindingWaitGen(@Qualifier("loanOrderAmqpAdmin") AmqpAdmin amqpAdmin, @Qualifier("oneClickQuotaNotice") Queue oneClickQuotaNotice, @Qualifier("loanOrderExchange") FanoutExchange fanoutExchange) {
Binding binding = BindingBuilder.bind(oneClickQuotaNotice).to(fanoutExchange);
amqpAdmin.declareBinding(binding);
return binding;
}
@Bean(name = "loanOrderRabbitTemplate")
public RabbitTemplate contractTemplate(@Qualifier("oneClickConnectionFactory") ConnectionFactory connectionFactory) {
if (Application.isDebug()) {
RabbitTemplate template = techRabbitBuilder.createRabbitTemplate(connectionFactory);
template.setExchange(orderExchange);
return template;
}
return null;
}
/**
* 订单状态消息处理监听
* @param queueService
* @param cachingConnectionFactory
* @param oneClickQuotaNotice
* @return
*/
@Bean("oneClickLoanXyqbSimpleMessageListenerContainer")
public SimpleMessageListenerContainer loanXyqbSimpleMessageListenerContainer(@Autowired QueueService queueService,
@Qualifier("oneClickConnectionFactory") CachingConnectionFactory cachingConnectionFactory,
@Qualifier("oneClickQuotaNotice") Queue oneClickQuotaNotice) {
SimpleRabbitListenerContainerFactory simpleRabbitListenerContainerFactory = techRabbitBuilder
.createSimpleRabbitListenerContainerFactory(cachingConnectionFactory);
SimpleRabbitListenerEndpoint simpleRabbitListenerEndpoint = new SimpleRabbitListenerEndpoint();
simpleRabbitListenerEndpoint.setQueues(oneClickQuotaNotice);
simpleRabbitListenerEndpoint.setMessageListener(new MessageListenerAdapter(queueService, "oneClickHandleMessage"));
SimpleMessageListenerContainer container = simpleRabbitListenerContainerFactory.createListenerContainer(simpleRabbitListenerEndpoint);
container.setAcknowledgeMode(AcknowledgeMode.AUTO);
container.setConcurrentConsumers(10);
container.start();
return container;
}
}
package cn.quantgroup.cashloanflowboss.spi.rabbitmq.service;
public interface QueueService {
/**
* 一键生成数据接收mq消息
* @param message
*/
void oneClickHandleMessage(String message);
}
package cn.quantgroup.cashloanflowboss.spi.rabbitmq.service;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class QueueServiceImpl implements QueueService {
@Override
public void oneClickHandleMessage(String message) {
log.info("[oneClickHandleMessage]message=" + message);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment