首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >路由模式 - direct

路由模式 - direct

作者头像
用户5927264
发布于 2019-08-01 02:23:18
发布于 2019-08-01 02:23:18
68600
代码可运行
举报
文章被收录于专栏:OSChinaOSChina
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.shi.rout;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

import org.junit.Test;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConsumerCancelledException;
import com.rabbitmq.client.QueueingConsumer;
import com.rabbitmq.client.QueueingConsumer.Delivery;
import com.rabbitmq.client.ShutdownSignalException;
import com.shi.util.RabbitMqUtils;

/**
 * 路由模式  direct
 * @author SHF
 * @version 创建时间:2018年7月4日  下午4:17:20
 */
public class RoutTest {
	
	//交换机名称
	private final static String EXCHANGE_NAME = "exchange_direct";
	//路由 key
	private final static String KEY_1 ="a";
	private final static String KEY_2 ="b";
	private final static String KEY_3 ="a";
	
	//队列名称
	private final static String QUEUE_1 ="queue_direct_1";
	private final static String QUEUE_2 ="queue_direct_2";
	
	/**
	 * 生产者 - 路由模式
	 * KEY_1 ="a";
	 * @author SHF
	 * @version 创建时间:2018年7月4日  下午4:20:39
	 * @throws TimeoutException 
	 * @throws IOException 
	 */
	@Test
	public void send() throws IOException, TimeoutException {
		//1 获取链接及mq 通道
		Connection connection = RabbitMqUtils.getConnection();
		Channel channel = connection.createChannel();
		
		//2 声明exchange
		channel.exchangeDeclare(EXCHANGE_NAME, "direct");
		
		//3 消息内容
		String message = " 施爷 路由模式direct 向你发送了一条消息....";
		channel.basicPublish(EXCHANGE_NAME, KEY_1, null, message.getBytes());
		System.out.println(" [x] sent:"+message);
		
		//4关闭通道及连接
		channel.close();
		connection.close();
	}
	
	/**
	 * 消费者1 - 路由模式
	 * KEY_2 ="b";
	 * @author SHF
	 * @version 创建时间:2018年7月4日  下午4:33:55
	 * @throws TimeoutException 
	 * @throws IOException 
	 * @throws InterruptedException 
	 * @throws ConsumerCancelledException 
	 * @throws ShutdownSignalException 
	 */
	@Test
	public void reic1() throws IOException, TimeoutException, ShutdownSignalException, ConsumerCancelledException, InterruptedException {
		//1 获取连接 及 通道
		Connection connection = RabbitMqUtils.getConnection();
		Channel channel = connection.createChannel();
		
		//2 声明队列
		channel.queueDeclare(QUEUE_1, false, false, false, null);
		
		//3 绑定交换机,指定路由
		channel.queueBind(QUEUE_1, EXCHANGE_NAME, KEY_2);
		
		//4 同一个服务器只会发送一条消息给消费者
		channel.basicQos(1);
		
		//5 定义队列的消费者
		QueueingConsumer consumer = new QueueingConsumer(channel);
		
		//6 监听队列,手动返回完成
		channel.basicConsume(QUEUE_1, false,consumer);
		
		//7 获取消息
		while(true) {
			Delivery delivery = consumer.nextDelivery();
			String message = new String(delivery.getBody());
			System.out.println( "[x] reiv1 :" + message);
			
			channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
		}
	}
	
	
	/**
	 * 消费者2 - 路由模式
	 * KEY_3 ="a"
	 * @author SHF
	 * @version 创建时间:2018年7月4日  下午4:33:55
	 * @throws TimeoutException 
	 * @throws IOException 
	 * @throws InterruptedException 
	 * @throws ConsumerCancelledException 
	 * @throws ShutdownSignalException 
	 */
	@Test
	public void reic2() throws IOException, TimeoutException, ShutdownSignalException, ConsumerCancelledException, InterruptedException {
		//1 获取连接 及 通道
		Connection connection = RabbitMqUtils.getConnection();
		Channel channel = connection.createChannel();
		
		//2 声明队列
		channel.queueDeclare(QUEUE_2, false, false, false, null);
		
		//3 绑定交换机,指定路由
		channel.queueBind(QUEUE_2, EXCHANGE_NAME, KEY_3);
		
		//4 同一个服务器只会发送一条消息给消费者
		channel.basicQos(1);
		
		//5 定义队列的消费者
		QueueingConsumer consumer = new QueueingConsumer(channel);
		
		//6 监听队列,手动返回完成
		channel.basicConsume(QUEUE_2, false,consumer);
		
		//7 获取消息
		while(true) {
			Delivery delivery = consumer.nextDelivery();
			String message = new String(delivery.getBody());
			System.out.println( "[x] reiv2 :" + message);
			
			channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
		}
	}
	
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
什么是Bundle ID​
登录成功后我们可以看到弹出的消息提示“您账号未支付688给apple,只能创建开发证书,无法提交上传发布,无法使用apple登录,支付,推送功能”,简单来说就是只能使用此款软件进行内测,不能上架。​
爱学iOS的小麦子
2023/05/12
7560
iOS App的上架和版本更新流程
作为一名iOSDeveloper,把开发出来的App上传到App Store是必要的。下面就来详细讲解一下具体流程步骤。
iOS Magician
2023/10/11
5K0
iOS App的上架和版本更新流程
iOS现有APP上架流程
1. Xcode-product-Archive生成release包,当出现图2.1.2界面时,生成release包功能
爱学iOS的小麦子
2023/05/09
6320
iOS现有APP上架流程
iOS APP打包上传到APPstore的最新步骤
一、前言: 作为一名iOS开发者,把辛辛苦苦开发出来的App上传到App Store是件必要的事。但是很多人还是不知道该怎么上传到App Store上 下面就来详细讲解一下具体流程步骤。 二、准备: 一个已付费的开发者账号(可分为): 账号类型分为个人(Individual) 公司(Company) 企业(Enterprise) 高校(University)四种类型 每年资费分别为99、99、
iOS Magician
2023/03/22
1.4K0
iOS APP打包上传到APPstore的最新步骤
iOS证书(.p12)和描述文件(.mobileprovision)申请
5+App开发  Apple证书  iOS证书 iOS有两种证书和描述文件: 证书类型: 1.开发(Development)证书和描述文件 2.发布(Distribution)证书和描述文件 使用场景: 1.用于开发测试,在HBuilder中打包后可在真机环境通过Safari调试 2.用于提交Appstore,在HBuilder中打包后可使用Application Loader提交到Appstore审核发布 准备环境: 1.必需要有苹果开发者账号,并且加入了“iOS Developer Program” 2Mac OS 10.9以上系统(如果已经申请p12证书则不需要) 登录iOS Dev Center 打开网站https://developer.apple.com/ 使用苹果开发者账号登录iOS Dev Center: 申请苹果App ID (如果已经申请,可跳过此节) 在“iOS Certificates”页面“Identifiers"下选择“App IDs",可查看到已申请的所有App ID,点击右上角的加号可创建新“App ID”:
iOS程序应用
2023/04/17
1.7K0
iOS证书(.p12)和描述文件(.mobileprovision)申请
app提交上架最新流程 ios
一、上架基本需求资料 1、苹果开发者账号(公司已有可以不用申请,需要开通开发者功能,每年 99 美元)
iOS Magician
2023/03/22
8560
iOS app上架app store流程详解
前提条件 在有效期内的苹果开发者账号(类型为个人或者公司账号)。还有一种情况,就是你的Apple ID被添加到公司开发者账号团队里面,这样也是可以的,但是需要叫管理员给你开通相应的账号权限,如下截图:
iOS Magician
2023/03/22
1.9K0
iOS app上架app store流程详解
iOS APP上架App Store其中一个步骤就是要把ipa文件上传到App Store
下面进行步骤介绍! 利用Appuploader这个软件,可以在Windows、Linux或Mac系统中申请ios和上传IPA到App Store Connect。
iOS Magician
2023/03/22
7210
iOS APP上架App Store其中一个步骤就是要把ipa文件上传到App Store
处理开发者账号到期导致APP下架的方处理开发者账号到期导致APP下架的方法
请注意:苹果开发者账号过期后,需要及时续费以避免APP被下架。更新会员资格后,请确保在iTunes Connect的"协议、税务和银行"部分同意付费应用协议。
爱学iOS的小麦子
2023/06/30
4790
免费苹果账号(apple id)申请ios证书p12真机调试
HBuilder可以直接打包越狱版的ipa包,但需要越狱手机才能安装,如果需要安装到没越狱的手机安装,需要自己申请ios证书打包。 一般是需要一个付费了的苹果开发者账号才能申请ios证书打包。 这里介绍用普通的没有付费的苹果账号(apple id),直接申请ios证书p12,打包安装到没有越狱的手机真机调试,完全免费。 当然如果要上架App Store还是需要注册一个付费的苹果开发者账号。 苹果开发者账号申请教程 申请ios证书打包ipa测试分五步进行 1.申请一个苹果账号 2.申请ios测试证书(p12)
iOS程序应用
2023/04/17
3.4K0
《简化iOS APP上架流程,App Uploader助你搞定!》
弹出空白错误提示,请下载最新版本的appuploader试试,或者删除appuploader目录下的data目录试试 收不到短信,请在发送类型地方选择短信类型,选择自己能收短信的号码,并且一天之内有总短信数量限制,没用超过数量
爱学iOS的小麦子
2023/04/21
4410
iOS AppStore上架流程图文详解
1、首先得注册Apple Developer的开发者账号,最后如果要上架苹果商店,这个账号是要交年费的,核算下来大概600多元人民币。
爱学iOS的小麦子
2023/05/09
3.8K0
iOS AppStore上架流程图文详解
2022完整iOS APP发布App Store上架流程指南
如果你是新手,将在这里清晰发布到App Store整个上架流程,还有相应的流程解决方案。 如果你上架过iOS APP,这里会了解到有更快捷的上架过程。 上架iOS最基本需要一个付费的开发者账号,还没有的话申请一个或者借用。 通常也还需要一台Mac电脑,不过这里介绍到不用Mac在Windows系统中直接发布iOS APP到App Store。 如果没有Mac,也无所谓。 申请开发者账号介绍
iOS Magician
2023/03/21
1.8K0
2022完整iOS APP发布App Store上架流程指南
Appuploader 常见错误及解决方法
1. 遇到问题,第一个请登录苹果开发者官网     检查一遍账号是否有权限,是否被停用,是否过期,是否有协议需要同意,**并且在右上角切换账号后检查所有关联的账号是否工作正常**,apple账号的邮箱也是个重要的地方,当有ipa上传,账号有发生变化,被停用,apple经常发送一些邮件,去检查邮件通知,根据邮件通知修改调整。只有账号正常没问题,再考虑是否软件哪个地方操作错误或者有软件功能错误。不自己检查问题就加qq,发邮件提问就不要怪客服的态度不好,因为你需要反思自己是不是伸手党,懒得连字都不愿意看的人。apple开发常用的3个网址:
iOS Magician
2023/03/22
5170
Appuploader 常见错误及解决方法
最全iOS 应用上架流程(提交到AppStore)
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
爱学iOS的小麦子
2022/11/14
6030
appuploader 上架详解大全(下)
1.本文详细介绍最新的在windows上进行ios app开发编译打包安装到手机测试的完整流程。介绍ios开发经常遇到的问题和解
iOS程序应用
2023/04/17
2K0
appuploader 上架详解大全(下)
2022最新上传ipa到appstore的步骤说明​
我们平时在开发原生的ios app的时候,有苹果电脑在手,上传ipa文件到苹果开发者中心比较简单,直接在xcode上就可以实现了。​
iOS程序应用
2022/12/09
8150
2022 ios APP最新iOS开发上架测试教程
ios 发布选择 apple distribution或者 ios distribution (app store and ad hoc)
iOS程序应用
2022/12/02
4840
ios APP最新打包上线教程
本文详细介绍最新的在windows上进行ios app开发编译打包安装到手机测试的完整流程。介绍ios开发经常遇到的问题和解决方法,包括ios开发证书,ios开发描述文件等。
iOS程序应用
2023/04/17
2590
ios APP最新打包上线教程
2022超详细流程ios APP最新打包上线教程
本篇文章主要介绍使用Hbuildx开发的移动端项目,打包以及上传值苹果应用商店全部流程
iOS程序应用
2023/04/17
4100
推荐阅读
相关推荐
什么是Bundle ID​
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档