Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >RABBITMQ向LOGSTASH发送消息

RABBITMQ向LOGSTASH发送消息
EN

Stack Overflow用户
提问于 2021-02-11 04:02:46
回答 1查看 3.2K关注 0票数 1

你能帮我在日志中输入RabbitMQ吗?我的应用程序将代码的版本发送到rabbitmq,然后将其存储在弹性堆栈中。在rabbitmq中为app创建了队列名: app_version_queue;类型:经典;持久:真

然后用该配置配置logstash:

代码语言:javascript
运行
AI代码解释
复制
input {
  rabbitmq {
    id => "rabbitmyq_id"
    # connect to rabbit
    host => "localhost"
    port => 5672
    vhost => "/"
    # INPUT - PRODUCERS
    key => "app_version_queue"
    # OUTPUT - CONSUMER
    # queue for logstash
    queue => "logstash"
    auto_delete => false
    # Exchange for logstash
    exchange => logstash
    exchange_type => direct
    durable => "true"
    # No ack will boost your perf
    ack => false
  }
}

output {
  elasticsearch {
    hosts => [ "elasticsearch:9200" ]
    index => "app_version-%{+YYYY.MM.dd}"
  }
}

这是可行的,但是现在,在RabbitMQ控制台中,我在表排队的消息中看到就绪: 914,444,Unacked: 0总计: 914,444

我的磁盘空间在三天内就满了。重新启动rabbitmq服务器后,所有空间都是空闲的。

更新:所有的原因,为什么我要这么做,我想从我想做的链app=>rabbit=>nifi=>elastic : app=>rabbit=>logstash=>elastic中删除

  1. 队列: app_version我的应用程序向nifi=>ELASTIC 队列发送消息
  2. 队列: logstash,我用logstash Queue2 -对数存储创建的

我试图阻止NIFI的发送,但是消息没有离开。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-11 08:13:44

听起来就像你已经创建了两次基础设施:

  • 在RabbitMQ中手动一次
  • 在LogStash的配置选项中设置一次

你需要的是--只有三样东西--

  • 要向其发布消息的应用程序的交换。
  • 用于使用来自LogStash的消息的队列。
  • 该交换和该队列之间的绑定;队列将获得每个发布到交换的带有匹配路由密钥的消息的副本

你拥有的是所有的

  • 应用程序将消息发布到的一个名为logs (手动创建)的交换。
  • 一个名为app_version_queue的队列(手动创建),没有任何消耗。
  • 一个绑定(手动创建)将消息的副本从logs传递到app_version_queue,然后app_version_queue永远在那里。
  • 一个名为logstash的交换(由LogStash创建),它没有向其发布消息。
  • 一个名为logstash (由LogStash创建)的队列,LogStash从该队列中消费消息。
  • 一个绑定(由LogStash创建)从logstash交换到logstash队列,它什么也不做,因为没有消息发布到该交换。
  • logs交换到logstash队列的绑定(手动创建),它实际上是从应用程序传递消息。

因此,对于这三种情况(交换、队列和绑定),您需要:

  • 决定一个名字
  • 决定你是要创建它,还是让LogStash创建它
  • 配置所有内容以使用相同的名称

例如,您可以保留名称logsapp_version_queue,并手动创建所有内容。

那么您的LogStash应用程序应该如下所示:

代码语言:javascript
运行
AI代码解释
复制
input {
  rabbitmq {
    id => "rabbitmyq_id"
    # connect to rabbit
    host => "localhost"
    port => 5672
    vhost => "/"
    # Consume from existing queue
    queue => "app_version_queue"
    # No ack will boost your perf
    ack => false
  }
}

另一方面,您可以只创建logs交换,让LogStash创建队列和绑定,如下所示:

代码语言:javascript
运行
AI代码解释
复制
input {
  rabbitmq {
    id => "rabbitmyq_id"
    # connect to rabbit
    host => "localhost"
    port => 5672
    vhost => "/"
    # Create a new queue
    queue => "logstash_processing_queue"
    durable => "true"
    # Take a copy of all messages with the "app_version_queue" routing key from the existing exchange
    exchange => "logs"
    key => "app_version_queue"
    # No ack will boost your perf
    ack => false
  }
}

或者,您可以让LogStash创建所有这些,并确保应用程序发布到正确的exchange:

代码语言:javascript
运行
AI代码解释
复制
input {
  rabbitmq {
    id => "rabbitmyq_id"
    # connect to rabbit
    host => "localhost"
    port => 5672
    vhost => "/"
    # Create a new queue
    queue => "logstash_processing_queue"
    durable => "true"
    # Create a new exchange; point your application to publish here!
    exchange => "log_exchange"
    exchange_type => "direct"
    # Take a copy of all messages with the "app_version_queue" routing key from the new exchange
    key => "app_version_queue"
    # No ack will boost your perf
    ack => false
  }
}

我可能会选择中间选项: exchange是应用程序的部署需求的一部分(如果不能在那里发布,它将产生错误),但是任何数量的队列都可能由于不同的原因绑定到它(在测试环境中根本不需要设置ElasticSearch )。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66154402

复制
相关文章
RabbitMq消息发送
如果要发送一个消息,可以使用channel类的basicPublish方法参考如下,其中在rabbitmqTemplate中封装的方式是:
写一点笔记
2022/08/11
9090
RabbitMq消息发送
RabbitMQ延迟消息发送
典型的场景有微信、支付宝等第三方支付回调接口,会在用户支付后3秒、5秒、30秒等等时间后向应用服务器发送回调请求,确保应用服务器可以正确收到消息。
兜兜毛毛
2019/10/23
2.7K0
RabbitMQ延迟消息发送
Python之Rabbitmq发送消息
Rabbitmq是一个在AMQP基础上完整的,可复用的企业消息系统。他遵循Mozilla Public License开源协议。
Wu_Candy
2022/07/04
1.1K0
Python之Rabbitmq发送消息
RabbitMQ消息发送、消费和确认
前一篇文章介绍到RabbitMQ相关组件的声明,组件声明完成之后,就可以发送消息和消费消息,消费消息的时候需要考虑消息的确认。
Throwable
2020/06/23
4.5K0
amq简单使用_rabbitmq发送消息
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说amq简单使用_rabbitmq发送消息,希望能够帮助大家进步!!!
Java架构师必看
2022/08/01
7980
RabbitMQ简单消息发送与接收
  这里将编写两个java程序。发送单个消息的生产者和接收消并打印出来的消费者。   在下图中,p是我们的生产者,c是我们的消费者。中间框是一个队列-RabbitMQ代表使用者保留的消息缓冲区。
别团等shy哥发育
2023/02/25
5440
RabbitMQ简单消息发送与接收
SpringBoot-RabbitMQ发送消息的监控
刚才我们发送消息,不管成功还是失败,都不报错,结果看效果时,发现有的没有发进去,那么如何知道消息是否发送成功呢,RabbitMQ提供了一个消费监视的功能。注意:RabbitMQ发送消息分为2个阶段,消息发送到交互机里面,可以监视,消息由交互机到队列里面,也可以监视。
程序员NEO
2023/09/27
2960
SpringBoot-RabbitMQ发送消息的监控
RabbitMQ如何保证消息99.99%被发送成功?
要想保证消息不丢失,首先我们得保证生产者能成功的将消息发送到RabbitMQ服务器。
Java_老男孩
2019/06/06
1K0
SpringCloud(六) - RabbitMQ安装,三种消息发送模式,消息发送确认,消息消费确认(自动,手动)
在测试的时候,一定要注意交换机和队列的绑定关系,只要绑定过的关系就会一直存在需要手动删除;如果测试结果不正常的时候,看一些交换机和队列与键值的绑定关系;
化羽羽
2022/11/14
1.6K0
SpringCloud(六) - RabbitMQ安装,三种消息发送模式,消息发送确认,消息消费确认(自动,手动)
SpringBoot集成websocket实现后端向页面发送消息
1、引入依赖: compile "org.springframework.boot:spring-boot-starter-web:${verSpringBoot}" compile "org.springframework.boot:spring-boot-starter-websocket:${verSpringBoot}" 2、添加Webscoket配置: /** * ServerEndpointExporter 作用 * * 这个Bean会自动注册使用@Se
JQ实验室
2022/02/10
1.2K0
Vfp实现向钉钉群发送消息,消息提醒不错过
我在工作是见到过python、jave、php实现发送消息至钉钉群,觉得蛮好用的,一次消息通知多少人。搜了一圈没有发现我们VFP是怎么打通调用,那我们vfp程序能不能实现这样的功能呢?答案是肯定的,
加菲猫的VFP
2023/08/21
4350
Vfp实现向钉钉群发送消息,消息提醒不错过
【SpringBoot MQ 系列】RabbitMq 消息发送基本使用姿势
前面两篇博文,分别介绍了RabbitMq的核心知识点,以及整合SpringBoot的demo应用;接下来也该进入正题,看一下SpringBoot的环境下,如何玩转rabbitmq
一灰灰blog
2020/02/25
1.3K0
【SpringBoot MQ 系列】RabbitMq 消息发送基本使用姿势
Rabbitmq 通过死信队列实现延迟消息发送
DLX(Dead-Letter-Exchange), 可以称之为死信交换器, 也成死信信箱. 当消息在一个队列中变成死信(dead message) 后, 会被重新发送到另外一个交换器中, 这个交换器就是 DLX. 绑定了 DLX 的队列就是死信队列. 说白了就是, 有两个队列, 一个队列上的消息设置了过期时间, 但没有消费者. 另一个队列是普通队列, 有消费者. 后者被称为死信队列. 当前一个队列消息过期后, Rabbitmq 会自动将过期消息转发到死信队列里. 然后被死信队列的消费者消费掉. 实现消息的延迟发送功能
芥末鱿鱼
2022/05/05
5540
RabbitMQ系列-顺序消费模式和迅速消息发送模式
    MQ使用过程中,有些业务场景需要我们保证顺序消费,而如果一个Producer,一个Queue,多个Consumer的情况下是无法保证顺序的;
allsmallpig
2021/02/25
2.1K0
RabbitMQ事务和Confirm发送方消息确认——深入解读
根据前面的知识(深入了解RabbitMQ工作原理及简单使用、Rabbit的几种工作模式介绍与实践)我们知道,如果要保证消息的可靠性,需要对消息进行持久化处理,然而消息持久化除了需要代码的设置之外,还有一个重要步骤是至关重要的,那就是保证你的消息顺利进入Broker(代理服务器),如图所示:
磊哥
2018/08/02
1.3K0
RabbitMQ事务和Confirm发送方消息确认——深入解读
【RabbitMq 篇六】-消息确认(发送确认与接收确认)
消息确认是保证消息传递可靠性的重要步骤,上一节我们说到持久化,持久化只能保证消息不丢失,但是如果消息如果投递失败我们怎么进行补偿操作呢?解决办法就是实现回调函数进行操作,在消息的发送和消息的消费都可以进行补偿操作,下面我们就要讲解消息确认。
胖虎
2019/06/26
3.5K0
【RabbitMq 篇六】-消息确认(发送确认与接收确认)
使用 Spring Cloud Bus 向指定的微服务发送消息
要向指定的微服务发送消息,需要使用 Spring Cloud Bus 提供的 DestinationProvider 接口,该接口可以返回目标微服务的名称。在消息广播时,Spring Cloud Bus 会根据目标微服务的名称将消息发送到指定的微服务中。
堕落飞鸟
2023/04/18
8660
RabbitMQ 整合Spring 实现多客户端发送消息队列
好久没更新了。。实在太忙,对不起大家,今天更一下最近使用到的一些东西,比较实用!看官们亲拍~~ 以前在单项目中用过RabbitMQ,没有问题 不过这次在分布式项目中使用RabbitMQ中有点搞糊涂了,
风间影月
2018/04/04
1.4K0
RabbitMQ 整合Spring 实现多客户端发送消息队列
RabbitMQ消息中间件技术精讲7 发送自定义属性消息
Auto Delete:如选yes,代表当最后一个监听被移除之后,该Queue会自动被删除
凯哥Java
2019/07/18
1.2K0
RabbitMQ消息中间件技术精讲7 发送自定义属性消息
如何在 Linux 终端上向登录用户发送广播消息?
在 Linux 系统中,您可以使用广播消息功能向当前登录的用户发送通知或警告。广播消息可以用于系统管理员向所有用户发送重要信息,或者用于协调团队成员之间的通信。本文将详细介绍如何在 Linux 终端上向登录用户发送广播消息,并提供相应的示例。
网络技术联盟站
2023/06/08
1.9K0
如何在 Linux 终端上向登录用户发送广播消息?

相似问题

rabbitmq / logstash丢失消息

22

从rabbitMQ向PostgreSQL发送消息

160

使用JMS向RabbitMQ发送消息

14

从filebeat向logstash发送json消息

134

如何使用rabbitMQ向messagequeue发送消息?

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档