网站开发怎么谈客户,聊城专业建网站价格,国内做进口的电商网站,公司做网站怎么赚钱吗2种远程服务调用
1openFeign#xff1a;
优点#xff1a;能拿到被调用的微服务返回的数据#xff0c;系统系耦度高#xff0c;系统稳定。
缺点#xff1a;同步调用#xff0c;如果有很多服务需要被调用#xff0c;耗时长。
MQ,消息队列#xff0c;RabbitMQ是消息we…2种远程服务调用
1openFeign
优点能拿到被调用的微服务返回的数据系统系耦度高系统稳定。
缺点同步调用如果有很多服务需要被调用耗时长。
MQ,消息队列RabbitMQ是消息web中间件的其中一种产品。
2RabbitMQ
使用AMQP(高级队列协议协议是一种规范)。
优点
1 异步调用可以处理很多请求。一万个
2时效性快微秒级是毫秒级的1000倍。
3 削xue 一声峰填谷。
4单机吞吐量高每秒处理消息的个数。
5消息可靠性好。
6里面有vhost虚拟主机不用在安装各种环境开发环境测试环境线上环境
缺点
1不能拿到被调用的微服务返回的数据
2引入外部依赖实现应用解耦系统可用性降低系统越不稳定
图解便于理解 简单模式实例
1linux里
我用的redis,RabbitMQ,现在redis里安装RabbitMQ
1打开虚拟机在docker里添加RabbitMQ,命令如下
docker run -d --namerabbit01 -e RABBITMQ_DEFAULT_USERguest -e RABBITMQ_DEFAULT_PASSguest -p 5672:5672 -p 15672:15672 -p 25672:25672 --hostname rabbit01 --restartalways -v /data/rabbit/data:/var/lib/rabbitmq -v /data/rabbit/conf:/etc/rabbitmmq rabbitmq:3.11-management
2安装完成之后打开网页版查看RabbitMQ端口号15672
我输入的网址192.168.74.75:15672 成功页面 2idea里
1创建一个maven项目就可以选择快速创建。 2创建父工程生产者消费者 3在父工程里添加依赖Rabbit
如果传JSON数据就加fastjson依赖
!--rabbitmq依赖--
dependencygroupIdcom.rabbitmq/groupIdartifactIdamqp-client/artifactIdversion5.14.2/version/dependency
!--对象和json数据的转换--dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.83/version/dependency 4编写生产者代码
package org.example;
import com.alibaba.fastjson.JSON;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.HashMap;
import java.util.concurrent.TimeoutException;
/*** Hello world!**/
public class App {public static void main( String[] args ) {// 创建连接工厂ConnectionFactory factory new ConnectionFactory();// 设置 RabbitMQ 服务器的地址,我用的redis,RabbitMQ,现在redis里安装RabbitMQfactory.setHost(192.168.74.75);Connection connection null;Channel channel null;try {connection factory.newConnection();// 创建一个通道channel connection.createChannel();// 创建消息内容HashMapString, Object map new HashMap();map.put(name, 张三);map.put(age, 22);channel.basicPublish(, qy172-RabbitMQ, null, JSON.toJSONBytes(map));System.out.println(发送成功);} catch (IOException e) {// 发生 IO 异常时抛出运行时异常throw new RuntimeException(e);} catch (TimeoutException e) {// 发生超时异常时抛出运行时异常throw new RuntimeException(e);} finally {if (channel ! null) {try {// 关闭通道channel.close();} catch (IOException | TimeoutException e) {// 发生 IO 或超时异常时抛出运行时异常throw new RuntimeException(e);}}if (connection ! null) {try {// 关闭连接connection.close();} catch (IOException e) {// 发生 IO 异常时抛出运行时异常throw new RuntimeException(e);}}}}
}4编写消费者代码
package org.example;
import com.alibaba.fastjson.JSON;
import com.rabbitmq.client.*;
import java.io.IOException;
import java.util.Map;
public class App {public static void main(String[] args) throws Exception {// 创建连接工厂对象ConnectionFactory factory new ConnectionFactory();// 设置 RabbitMQ 服务器的主机地址为 192.168.74.75factory.setHost(192.168.74.75);Connection connection factory.newConnection();// 创建一个 RabbitMQ 连接Channel channel connection.createChannel();// 创建一个通道用于与 RabbitMQ 之间的通信Consumer consumer new DefaultConsumer(channel) {// 创建一个消费者对象并重写其方法Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {// 消费消息的处理方法String json new String(body);// 将消息内容转换为字符串Map map JSON.parseObject(json, Map.class);// 使用 JSON 解析成 Map 对象System.out.println(消息内容map);// 输出消息内容}};channel.basicConsume(qy172-RabbitMQ,true,consumer);}
}