RabbitMQ使用总结(代码)

应用情景:

SpringCloud项目中,当一个模块A调用模块B中的方法,使用消息队列RabbitMQ。

模块A中需要增加配置:

/**
 * rabbitmq配置
 * Springboot 容器启时将Rabbitmq加载
 * @author Administrator
 *
 */
@Configuration
public class RabbitmqConfig {

	@Bean
	public TopicExchange topicExchange() {
		return new TopicExchange(UserCenterMq.MQ_EXCHANGE_USER);
	}
}

对应接口:

/**
 * rabbitmq的exchange和routing key定义
 * 
 * @author Administrator
 *
 */
public interface UserCenterMq {

	/**
	 * 用户系统exchange名
	 */
	String MQ_EXCHANGE_USER = "user.topic.exchange";

	/**
	 * 角色删除routing key
	 */
	String ROUTING_KEY_ROLE_DELETE = "role.delete";
}

发布消息:

		amqpTemplate.convertAndSend(UserCenterMq.MQ_EXCHANGE_USER, UserCenterMq.ROUTING_KEY_ROLE_DELETE, id);

模块B中的配置:

/**
 * 删除角色时,处理消息
 * 
 * @author Administrator
 *
 */
@Slf4j
@Component
@RabbitListener(queues = RabbitmqConfig.ROLE_DELETE_QUEUE)
public class RoleDeleteConsumer {

	@Autowired
	private RoleMenuDao roleMenuDao;

	/**
	 * 接收到删除角色的消息
* 删除角色和菜单关系 * * @param roleId */ @RabbitHandler public void roleDeleteHandler(String roleId) { log.info("接收到删除角色的消息,roleId:{}", roleId); try { roleMenuDao.delete(roleId, null); } catch (Exception e) { log.error("角色删除消息处理异常", e); } } }

你可能感兴趣的:(RabbitMQ)