Elasticsearch Rabbitmq

ElasticSearch 7.x 默认不再支持指定索引类型, 默认索引类型是_doc

新增: PUT
删除: DELETE
修改: POST
查询: GET/POST 获得索引结构只能用GET /map

1.创建搜索请求对象 SearchRequest
2.创建搜索源构建者对象
准备查询构建者对象QueryBuilders.matchQuery()方法
3.用搜索源构建者对象builder .query( )方法;
4.将搜索构建者对象searchSearch加入到搜索请求对象中, searchRequest.source(builder);
5.将搜索请求对象searchRequest放入剩余高水平客户端对象restHighLevelClient的 .search(searchRequest,RequestOptions.DEFAULT)方法中.

  1. 新建一个ConnectionFactory连接工厂,
    factory.setHost(“192.168.10.128”);
    factory.setPort(5672);
    factory.setUsername(“guest”);
    factory.setPassword(“guest”);
    factory.setVirtualHost("/"); //设置虚拟主机

    return factory.newConnection();

2.创建通道对象
connection.createChannel();

3.用通道创建队列
//声明通道,exclusive为true后此连接将受限,arguments:例如路由头
channel.queueDeclare(queue,durable,exclusive,autoDelete,arguments);

4.用通道发布消息到队列
channel.basicPublish(exchange,routingKey,BasicProperties,byte[])

5.消费:
创建一个new DefaultConsumer(channel){@Override 重写handleDelivery()方法,输出body } 的构造方法

用通道指定预抓取的数量(超过将无法接收消息)	和手动ack
	channel.basicQos(1);
	服务器是否需要显式确认autoAck:false
	channel.basicConsume("Work", false, consumer);

手动ack:	channel.basicAck();

6.用通道声明一个交换机,Builtin:内键指令,内装式交换机类型:DIRECT(“direct”), FANOUT(“fanout”), TOPIC(“topic”), HEADERS(“headers”);
channel.exchangeDeclare(“myExchange”, BuiltinExchangeType.FANOUT);

7.用通道将交换机绑定到队列中
channel.queueBind(“HelloWorld”, “myExchange”, “routingKey”);

生产者创建Topic的exchange并且绑定到队列中,这次绑定可以通过*和#关键字,对指定RoutingKey内容,编写时注意格式 xxx.xxx.xxx去编写, *代表 一个xxx,而#代表多个xxx.xxx,在发送消息时,指定具体的RoutingKey到底是什么。

8.绑定队列的时候有路由键,发送消息的时候也有路由键,发送时与绑定时的路由键一定要保持一致才能成功发送

9.rabbitmq的事务:事务可以保证消息100%传递
Confirm的确认机制: 保证消息到达交换机,交换机无法持久化信息
//开启confirm
channel.confirmSelect();
//确定批量操作confirm
chanel.waitForConfirmsOrDie();
Return机制: 保证消息到队列,队列可以持久化信息
channel.addReturnListener(new ReturnListener(){
重写handleReturn方法
});
mandatory:强制的; 法定的; 义务的
channel.basicPublish(“exchange”,“routingKey”,mandatory,null,msg.getBytes());

10、spring boot整合,
创建新的交换机
return TopicExchange(“boot-topic-exchange”, false, false, null);
创建新的队列
return Queue(“boot-queue”, true, false, false);
绑定队列到交换机
BindingBuilder.bind(queue).to(topicExchange).with(".red.");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值