当前位置: 首页 > news >正文

电商网站开发过程自建站怎么推广

电商网站开发过程,自建站怎么推广,网站是哪个公司做的,招聘免费发布平台目录 Work queues 工作队列模式 Pub/Sub 订阅模式 Routing路由模式 Topics通配符模式 工作模式总结 Work queues 工作队列模式 C1和C2属于竞争关系,一个消息只有一个消费者可以取到。 代码部分只需要用两个消费者进程监听同一个队里即可。 两个消费者呈现竞争关…

目录

Work queues 工作队列模式

 Pub/Sub 订阅模式

Routing路由模式

Topics通配符模式 

 工作模式总结


Work queues 工作队列模式

C1和C2属于竞争关系,一个消息只有一个消费者可以取到。

 代码部分只需要用两个消费者进程监听同一个队里即可。

两个消费者呈现竞争关系。

用一个生产者推送10条消息

        for(int i=0;i<10;i++){String body=i+"hello rabbitmq!!!";channel.basicPublish("","work_queues",null,body.getBytes());}

两个监听的消费者接收情况如下。 

 

 Pub/Sub 订阅模式

一个生产者发送消息后有两个消费者可以收到消息。

生产者把消息发给交换机,交换机再把消息通过Routes路由分发给不同的队列。

//发送消息
public class producer_PubSub {public static void main(String[] args) throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory=new ConnectionFactory();//2.设置参数factory.setHost(""); //设置ip地址。默认为127.0.0.1factory.setPort(5672);              //端口 默认值5672factory.setVirtualHost("/itcast");  //设置虚拟机 默认值/factory.setUsername("yhy");        //用户名,默认值guestfactory.setPassword("");     //密码,默认值guest//3.创建连接ConnectionConnection connection = factory.newConnection();//4.创建ChannelChannel channel = connection.createChannel();/** exchangeDeclare(String exchange, BuiltinExchangeType type, boolean durable, boolean autoDelete, boolean internal, Map<String, Object> arguments)* 参数:* 1.exchange  : 交换价名称* 2.type      : 交换机类型 ,有四种*               DIRECT("direct"),  定向FANOUT("fanout"),   扇形(广播),发送消息到每一个与之绑定队列TOPIC("topic"),     通配符的方式HEADERS("headers"); 参数匹配*3.durable  :是否持久化* 4.autoDelete:是否自动删除* 5.internal: 内部使用。一般false* 6.arguments:参数* *///5.创建交换机String exchangeName="test_fanout";channel.exchangeDeclare(exchangeName, BuiltinExchangeType.FANOUT,true,false,false,null);//6.创建队列String queue1Name="test_fanout_queue1";String queue2Name="test_fanout_queue2";channel.queueDeclare(queue1Name,true,false,false,null);channel.queueDeclare(queue2Name,true,false,false,null);/** queueBind(String queue, String exchange, String routingKey)* 参数:* queue:队列名* exchange:交换机名称* routingKey:路由键,绑定规则*   如果交换机类型为fanout,routingKey设置为""* *///7.绑定队列和交换机channel.queueBind(queue1Name,exchangeName,"");channel.queueBind(queue2Name,exchangeName,"");String body="日志信息:调用了findAll方法";//8.发送消息channel.basicPublish(exchangeName,"",null,body.getBytes());//9.释放资源channel.close();connection.close();}
}

 运行之后两个队列里面就会多一条消息

两个消费者的代码大同小异,只是绑定的队列名不同,这里只给其中一个

public class consumer_PubSub1 {public static void main(String[] args) throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory=new ConnectionFactory();//2.设置参数factory.setHost(""); //设置ip地址。默认为127.0.0.1factory.setPort(5672);              //端口 默认值5672factory.setVirtualHost("/itcast");  //设置虚拟机 默认值/factory.setUsername("yhy");        //用户名,默认值guestfactory.setPassword("");     //密码,默认值guest//3.创建连接ConnectionConnection connection = factory.newConnection();//4.创建ChannelChannel channel = connection.createChannel();String queue1Name="test_fanout_queue1";String queue2Name="test_fanout_queue2";/** basicConsume(String queue, boolean autoAck, Consumer callback)* 参数:*   1.队列名称*   2.autoAck:是否自动确认*   3.callback:回调对象* *///6.接收消息Consumer consumer=new DefaultConsumer(channel){/** 回调方法,当收到消息后,会自动执行该方法* 1.consumerTag:标识* 2.envelope :获取一些信息,交换机,路由key...* 3.properties: 配置信息* 4.body: 数据* */@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
//                System.out.println("consumerTag:"+consumerTag);
//                System.out.println("Exchange:"+envelope.getExchange());
//                System.out.println("RoutingKey:"+envelope.getRoutingKey());
//                System.out.println("properties:"+properties);System.out.println("body:"+new String(body));System.out.println("将日志信息打印到控制台......");}};channel.basicConsume(queue1Name,true,consumer);//不需要关闭资源}
}

 控制台输出有

Routing路由模式

对于特定级别的信息会发送到别的队列,如上图的error,在发送消息时也会有一个routing,只要和后面的队列对应上就可以发送到对应队列。 

 生产者代码:

//发送消息
public class producer_Routing {public static void main(String[] args) throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory=new ConnectionFactory();//2.设置参数factory.setHost(""); //设置ip地址。默认为127.0.0.1factory.setPort(5672);              //端口 默认值5672factory.setVirtualHost("/itcast");  //设置虚拟机 默认值/factory.setUsername("yhy");        //用户名,默认值guestfactory.setPassword("");     //密码,默认值guest//3.创建连接ConnectionConnection connection = factory.newConnection();//4.创建ChannelChannel channel = connection.createChannel();/** exchangeDeclare(String exchange, BuiltinExchangeType type, boolean durable, boolean autoDelete, boolean internal, Map<String, Object> arguments)* 参数:* 1.exchange  : 交换价名称* 2.type      : 交换机类型 ,有四种*               DIRECT("direct"),  定向FANOUT("fanout"),   扇形(广播),发送消息到每一个与之绑定队列TOPIC("topic"),     通配符的方式HEADERS("headers"); 参数匹配*3.durable  :是否持久化* 4.autoDelete:是否自动删除* 5.internal: 内部使用。一般false* 6.arguments:参数* *///5.创建交换机String exchangeName="test_direct";channel.exchangeDeclare(exchangeName, BuiltinExchangeType.DIRECT,true,false,false,null);//6.创建队列String queue1Name="test_direct_queue1";String queue2Name="test_direct_queue2";channel.queueDeclare(queue1Name,true,false,false,null);channel.queueDeclare(queue2Name,true,false,false,null);/** queueBind(String queue, String exchange, String routingKey)* 参数:* queue:队列名* exchange:交换机名称* routingKey:路由键,绑定规则*   如果交换机类型为fanout,routingKey设置为""* *///7.绑定队列和交换机//队列1绑定errorchannel.queueBind(queue1Name,exchangeName,"error");//队列2绑定error,info,warningchannel.queueBind(queue2Name,exchangeName,"info");channel.queueBind(queue2Name,exchangeName,"error");channel.queueBind(queue2Name,exchangeName,"warning");String body="日志信息:调用了findAll方法,级别:info,error,warning";//8.发送消息channel.basicPublish(exchangeName,"error",null,body.getBytes());//9.释放资源channel.close();connection.close();}
}

消费者代码(两个消费者就绑定队列名不一样):

public class consumer_Routing1 {public static void main(String[] args) throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory=new ConnectionFactory();//2.设置参数factory.setHost(""); //设置ip地址。默认为127.0.0.1factory.setPort(5672);              //端口 默认值5672factory.setVirtualHost("/itcast");  //设置虚拟机 默认值/factory.setUsername("yhy");        //用户名,默认值guestfactory.setPassword("");     //密码,默认值guest//3.创建连接ConnectionConnection connection = factory.newConnection();//4.创建ChannelChannel channel = connection.createChannel();String queue1Name="test_direct_queue1";String queue2Name="test_direct_queue2";/** basicConsume(String queue, boolean autoAck, Consumer callback)* 参数:*   1.队列名称*   2.autoAck:是否自动确认*   3.callback:回调对象* *///6.接收消息Consumer consumer=new DefaultConsumer(channel){/** 回调方法,当收到消息后,会自动执行该方法* 1.consumerTag:标识* 2.envelope :获取一些信息,交换机,路由key...* 3.properties: 配置信息* 4.body: 数据* */@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
//                System.out.println("consumerTag:"+consumerTag);
//                System.out.println("Exchange:"+envelope.getExchange());
//                System.out.println("RoutingKey:"+envelope.getRoutingKey());
//                System.out.println("properties:"+properties);System.out.println("body:"+new String(body));System.out.println("将日志信息存储到数据库");}};channel.basicConsume(queue1Name,true,consumer);//不需要关闭资源}
}

Topics通配符模式 

发送消息时设定的routingkey会和后面的routingkey进行匹配。

生产者代码:

//发送消息
public class producer_Topic {public static void main(String[] args) throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory=new ConnectionFactory();//2.设置参数factory.setHost(""); //设置ip地址。默认为127.0.0.1factory.setPort(5672);              //端口 默认值5672factory.setVirtualHost("/itcast");  //设置虚拟机 默认值/factory.setUsername("yhy");        //用户名,默认值guestfactory.setPassword("");     //密码,默认值guest//3.创建连接ConnectionConnection connection = factory.newConnection();//4.创建ChannelChannel channel = connection.createChannel();/** exchangeDeclare(String exchange, BuiltinExchangeType type, boolean durable, boolean autoDelete, boolean internal, Map<String, Object> arguments)* 参数:* 1.exchange  : 交换价名称* 2.type      : 交换机类型 ,有四种*               DIRECT("direct"),  定向FANOUT("fanout"),   扇形(广播),发送消息到每一个与之绑定队列TOPIC("topic"),     通配符的方式HEADERS("headers"); 参数匹配*3.durable  :是否持久化* 4.autoDelete:是否自动删除* 5.internal: 内部使用。一般false* 6.arguments:参数* *///5.创建交换机String exchangeName="test_topic";channel.exchangeDeclare(exchangeName, BuiltinExchangeType.TOPIC,true,false,false,null);//6.创建队列String queue1Name="test_topic_queue1";String queue2Name="test_topic_queue2";channel.queueDeclare(queue1Name,true,false,false,null);channel.queueDeclare(queue2Name,true,false,false,null);/** queueBind(String queue, String exchange, String routingKey)* 参数:* queue:队列名* exchange:交换机名称* routingKey:路由键,绑定规则*   如果交换机类型为fanout,routingKey设置为""* *///7.绑定队列和交换机// routing key 系统的名称.日志的级别。//需求:所有error级别的日志存入数据库,所有order系统的日志存入数据库channel.queueBind(queue1Name,exchangeName,"#.error");channel.queueBind(queue1Name,exchangeName,"order.*");channel.queueBind(queue2Name,exchangeName,"*.*");String body="日志信息:调用了findAll方法";//8.发送消息channel.basicPublish(exchangeName,"goods.error",null,body.getBytes());//9.释放资源channel.close();connection.close();}
}

 消费者代码

public class consumer_Topic1 {public static void main(String[] args) throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory=new ConnectionFactory();//2.设置参数factory.setHost(""); //设置ip地址。默认为127.0.0.1factory.setPort(5672);              //端口 默认值5672factory.setVirtualHost("/itcast");  //设置虚拟机 默认值/factory.setUsername("yhy");        //用户名,默认值guestfactory.setPassword("");     //密码,默认值guest//3.创建连接ConnectionConnection connection = factory.newConnection();//4.创建ChannelChannel channel = connection.createChannel();String queue1Name="test_topic_queue1";String queue2Name="test_topic_queue2";/** basicConsume(String queue, boolean autoAck, Consumer callback)* 参数:*   1.队列名称*   2.autoAck:是否自动确认*   3.callback:回调对象* *///6.接收消息Consumer consumer=new DefaultConsumer(channel){/** 回调方法,当收到消息后,会自动执行该方法* 1.consumerTag:标识* 2.envelope :获取一些信息,交换机,路由key...* 3.properties: 配置信息* 4.body: 数据* */@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
//                System.out.println("consumerTag:"+consumerTag);
//                System.out.println("Exchange:"+envelope.getExchange());
//                System.out.println("RoutingKey:"+envelope.getRoutingKey());
//                System.out.println("properties:"+properties);System.out.println("body:"+new String(body));System.out.println("将日志信息存储到数据库");}};channel.basicConsume(queue1Name,true,consumer);//不需要关闭资源}
}

 工作模式总结


文章转载自:
http://putiphar.fznj.cn
http://redemonstrate.fznj.cn
http://heintzite.fznj.cn
http://seditionary.fznj.cn
http://hawker.fznj.cn
http://retiral.fznj.cn
http://couverture.fznj.cn
http://protozoa.fznj.cn
http://pinge.fznj.cn
http://anadyr.fznj.cn
http://nomistic.fznj.cn
http://concave.fznj.cn
http://chancroid.fznj.cn
http://disculpation.fznj.cn
http://mandir.fznj.cn
http://euronet.fznj.cn
http://quiveringly.fznj.cn
http://fibrescope.fznj.cn
http://remediably.fznj.cn
http://rejoin.fznj.cn
http://standpattism.fznj.cn
http://carrollese.fznj.cn
http://sigurd.fznj.cn
http://masturbate.fznj.cn
http://glaciology.fznj.cn
http://intransit.fznj.cn
http://threaten.fznj.cn
http://tracing.fznj.cn
http://dunkirk.fznj.cn
http://uncinariasis.fznj.cn
http://noisome.fznj.cn
http://snakeroot.fznj.cn
http://disambiguate.fznj.cn
http://flamboyantism.fznj.cn
http://juvenscence.fznj.cn
http://nonfarm.fznj.cn
http://megavolt.fznj.cn
http://erma.fznj.cn
http://handtailor.fznj.cn
http://lever.fznj.cn
http://connive.fznj.cn
http://radian.fznj.cn
http://skillion.fznj.cn
http://against.fznj.cn
http://overbrim.fznj.cn
http://binit.fznj.cn
http://humblingly.fznj.cn
http://baignoire.fznj.cn
http://digitalose.fznj.cn
http://liked.fznj.cn
http://postnuptial.fznj.cn
http://superpower.fznj.cn
http://underseas.fznj.cn
http://refrigerator.fznj.cn
http://keppel.fznj.cn
http://septipartite.fznj.cn
http://transportation.fznj.cn
http://kionotomy.fznj.cn
http://wheelchair.fznj.cn
http://exhibitionist.fznj.cn
http://sneeze.fznj.cn
http://anime.fznj.cn
http://dipt.fznj.cn
http://towfish.fznj.cn
http://enchanter.fznj.cn
http://episcopacy.fznj.cn
http://traumatic.fznj.cn
http://incendiarism.fznj.cn
http://approvingly.fznj.cn
http://auxotroph.fznj.cn
http://empoison.fznj.cn
http://interdiction.fznj.cn
http://fragmentize.fznj.cn
http://housecarl.fznj.cn
http://mummy.fznj.cn
http://clairvoyance.fznj.cn
http://psychical.fznj.cn
http://cheeringly.fznj.cn
http://splenold.fznj.cn
http://scatterbrained.fznj.cn
http://desorb.fznj.cn
http://disagreeably.fznj.cn
http://backbone.fznj.cn
http://unmalicious.fznj.cn
http://gazetteer.fznj.cn
http://papalize.fznj.cn
http://retrieval.fznj.cn
http://unriddle.fznj.cn
http://unfamous.fznj.cn
http://yqb.fznj.cn
http://superficiary.fznj.cn
http://toothache.fznj.cn
http://yavis.fznj.cn
http://pilose.fznj.cn
http://hallstattian.fznj.cn
http://joyuce.fznj.cn
http://troupial.fznj.cn
http://inaccessibly.fznj.cn
http://devotionally.fznj.cn
http://contrive.fznj.cn
http://www.dt0577.cn/news/124771.html

相关文章:

  • 做同城网站赚钱吗电商网站分析
  • 广州越秀区邮政编码搜索引擎营销简称seo
  • 合肥市建设委员会网站网站怎么搭建
  • 个人如何做公益网站灵感关键词生成器
  • 上海 网站开发 工作室品牌推广策划方案怎么写
  • 在ppt里面做网站链接网络推广项目代理
  • 自己做的网站怎么接入银联支付百度知道问答首页
  • 阳澄湖大闸蟹网站建设东莞网络推广优化排名
  • 天天外链官网搜素引擎优化
  • 在百度做橱柜网站国家市场监管总局
  • 做网站干什么seo实战教程
  • 天津网站开发初学seo网站推广需要怎么做
  • 用html怎么做网站尾部河南网站建站推广
  • 关于建设二级网站的报告什么是关键词举例说明
  • 最先进的深圳网站建设山西seo
  • 网站seo优化很好徐州百都网络点赞外贸独立站建站
  • 网站买东西第三方怎么做龙岗seo优化
  • 网站 建设网站阿里云盘资源搜索引擎
  • 年底 网站备案十八大禁用黄app入口
  • 网站建设优秀网站建嘉兴新站seo外包
  • 在北京网站建设的岗位职责湖南正规关键词优化报价
  • 最专业的网站建设收费整站优化
  • 购物网站建站系统关键词检索
  • 域名停靠app大全下载网站入口aso优化方案
  • 网站开发商外包搜索引擎推广的优势
  • 网站建设方案备案软文拟发布的平台与板块
  • 房产信息网显示已签约对网站的建议和优化
  • 医疗 网站前置审批苏州关键词seo排名
  • 制作网站要钱吗百度识图在线
  • 广东专业网站优化公司国家免费技能培训