标签: messaging

RabbitMQ 预取被忽略

我遇到了一个问题,设置basic.qos1没有达到预期的效果 - 大量消息仍然被推送给我的消费者。

我的代码看起来有点像这样:

    Channel channel = getChannel("pollQueuePassive"); // from our own channel pool implementation

    try{
        channel.queueDeclarePassive(queue.name);
    } catch (IOException e){
        channel = getChannel("pollQueueActive");
        channel.queueDeclare(queue.name, true, false, false, null);
    }

    channel.basicQos(1);

    QueueingConsumer consumer = new QueueingConsumer(channel);
    channel.basicConsume(queue.name, autoAck, consumer);

    while (!stopPolling()) { 
        try{
              QueueingConsumer.Delivery delivery = consumer.nextDelivery();
              String message = new String(delivery.getBody());

              boolean workResult = doWork(message);
              if(!autoAck) {
                  if(workResult) 
                      channel.basicAck(delivery.getEnvelope().getDeliveryTag(), true);
                  else
                      channel.basicNack(delivery.getEnvelope().getDeliveryTag(), false, true);
              }

            } catch (InterruptedException e) {}
    }

    closeConnection();
Run Code Online (Sandbox Code Playgroud)

一旦我开始以这种方式从队列中消费,队列中的所有消息(在某​​些情况下最多 20,000 条)几乎会立即传递给消费者。由于我想同时将队列中的消息分发给数十个消费者,这种行为显然是不可取的。我玩过移动我的 …

java messaging amqp rabbitmq

1
推荐指数
1
解决办法
2484
查看次数

Chrome 扩展:处理多个消息监听器

我的扩展已chrome.runtime.onMessage.addListener()在后台页面和内容脚本中定义。有些消息需要由后台页面捕获,其他消息需要由内容脚本捕获。我的问题是,由于某种原因,我的内容脚本之一无法捕获消息。

我的背景页面包含:

chrome.runtime.onMessage.addListener(function (msg, sender, respond) {
    if (msg["injectCss"]) {
        chrome.runtime.sendMessage({ beginInject: msg.injectCss.files.length });
        injectCss(sender.tab.id, msg.injectCss.files, 0, function () {
            chrome.runtime.sendMessage({ endInject: true });
            respond();
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

我的内容脚本包含:

chrome.runtime.onMessage.addListener(function (msg, sender, respond) {
    if (msg["beginInject"]) {
        //do something
        respond();
    }
});
Run Code Online (Sandbox Code Playgroud)

chrome.runtime.sendMessage({ beginInject: msg.injectCss.files.length });从后台页面调用时,后台页面本身捕获消息而不是内容脚本。

问题:有没有办法将消息标记为“尚未处理”,以便其他侦听器有机会捕获并处理它?

javascript messaging google-chrome google-chrome-extension

1
推荐指数
1
解决办法
2718
查看次数

在微服务中广播消息并在多个实例中运行一次

我正在使用微服务,假设我有 3 个服务,它们都通过 JGroup UDP 通道相互连接(JGroups 可以在它们之间广播消息):

 ---            ---  ---
| A | --msg--> | B || C |
 ---            ---  ---
Run Code Online (Sandbox Code Playgroud)

如果我每个服务只有一个实例,那么一切都很好。但是,例如,如果我有两个 service 实例,C它们都会收到事件,并且它们都会运行自己的过程,结果将在数据库中复制(两次求和)。

 ---            ---  ---  ---
| A | --msg--> | B || C || C |
 ---            ---  ---  ---
Run Code Online (Sandbox Code Playgroud)

有没有办法管理这个?

messaging jgroups broadcast microservices

1
推荐指数
1
解决办法
838
查看次数

Apache Camel 作为 Kafka 的生产者/消费者

过去两天我一直在研究 Apache Camel 和 Kafka,希望能了解消息传递框架/代理。Camel/Kafka 的一个可能用例是使用 Kafka 作为消息代理,同时使用 Camel 实现生产者和消费者吗?我看到了一个类似的简短示例,但似乎无法再次找到它。如果不是,Camel:Kafka 组件的意义何在?

messaging apache-camel apache-kafka

1
推荐指数
1
解决办法
9243
查看次数

IBM MQ 身份验证和授权

根据我目前的理解,所有客户端连接都在两个级别进行身份验证,通道级别和队列管理器级别,

在队列管理器级别,它使用对象CONNAUTH的属性值来确定如何完成身份验证(例如:使用主机操作系统用户存储库),如果对象指定,则它使用结构中包含的用户 ID作为用户应用程序上下文的 id,它用于授权,或者如果存在,则运行客户端应用程序的用户 id 用作应用程序上下文的用户 id,并且该用户 id 用于授权。QMGRAUTHINFOAUTHINFOADOPTCTX(YES)MQCSPADOPTCTX(NO)

在渠道级别,不执行任何与授权相关的操作。仅按照配置进行身份验证。为了更精细的访问控制,一组通道验证记录被应用于通道。CONNAUTH属性的值QMGR仍用于确定要进行身份验证的用户存储库。

问题:

  1. 到目前为止我的说法正确吗?(非常感谢更正/解释。)
  2. 通道对象的 MCAUSER 属性有什么作用?其目的是什么?为什么消息通道代理在哪个用户下运行很重要?
  3. 毕竟,通道级身份验证实际上如何与 MCAUSER 配合使用?
  4. 这两个验证过程按什么顺序完成?是否先进行通道认证?

authentication messaging authorization ibm-mq

1
推荐指数
1
解决办法
2691
查看次数

Rails 3项目中未定义的方法`find_by_login'

当我尝试在我的Rails 3项目中提交表单时出现以下错误.当1个用户使用Simple Private Messaging插件向另一个用户发送消息时,将使用该表单.

我现在设置网站的方式,用户无需注册或登录即可发送消息.

我得到的错误

NoMethodError in MessagesController#create

undefined method `find_by_login' for #<Class:0x12a374238>

app/controllers/messages_controller.rb:33:in `create'
Run Code Online (Sandbox Code Playgroud)

消息控制器

def new
  @message = Message.new

  if params[:reply_to]
    @reply_to = @user.received_messages.find(params[:reply_to])
    unless @reply_to.nil?
      @message.to = @reply_to.sender.login
      @message.subject = "Re: #{@reply_to.subject}"
      @message.body = "\n\n*Original message*\n\n #{@reply_to.body}"
    end
  end
end

def create
  @message = Message.new(params[:message])
  @message.sender = @user
  @message.recipient = User.find_by_login(params[:message][:to])

  if @message.save
    flash[:notice] = "Message sent"
    redirect_to user_messages_path(@user)
  else
    render :action => :new
  end
end
Run Code Online (Sandbox Code Playgroud)

消息>新视图(这是创建表单的位置)

<%= form_for @message, :url => messages_path(:user_id => @user) do …
Run Code Online (Sandbox Code Playgroud)

forms messaging ruby-on-rails ruby-on-rails-3

0
推荐指数
1
解决办法
1901
查看次数

Python消息到其他应用程序

现状:

我有两个python应用程序(前端服务器和数据收集器,数据库是'它们之间').

目前使用redis作为db及其发布/订阅协议,以在新数据可用时通知前端.

但是我可能想要使用不同的数据库(并且不希望仅为pub/sub保留系统上的redis).

如果数据收集器已将新数据传输到数据库(不使用像beanstalkd或redis这样的外部消息队列),是否有任何简单的替代方法可以通知我的前端?

python messaging

0
推荐指数
1
解决办法
113
查看次数

MIDI信息说明

MIDI消息的位/字节结构是什么?

midi messaging

0
推荐指数
1
解决办法
561
查看次数

Solace Messaging - 有效载荷大小

solace消息传递平台目前支持的最大有效负载大小是多少?

messaging solace

0
推荐指数
1
解决办法
758
查看次数

MQTT - 将消息发布到许多独立主题

在MQTT中,客户端可以订阅主题名称或主题通配符.可以使用相同的通配符将消息发布到主题或某些主题.但是如何将消息发布到彼此独立的某个主题?我需要修改MQTT协议吗?

例如:我的服务器处理来自10个客户端的连接(这些客户端彼此不相关)与ids:client1,client2,...,client 10和client1想要向任意数量的客户端发送消息(例如客户端3,客户端7,客户端8)

messaging publish-subscribe mqtt

0
推荐指数
1
解决办法
3442
查看次数

Celery 与 Redis 对比 vs 单独 Redis

我无法理解使用 Celery 的优势是什么。我知道你可以将 Celery 与 Redis、RabbitMQ 等一起使用,但为什么我不直接获取这些消息队列服务的客户端,而不是将 Celery 放在它前面呢?

python java messaging rabbitmq celery

0
推荐指数
1
解决办法
1239
查看次数

ETE2 .phonehome()它是复活节彩蛋吗?

ETE2(用于系统发育树探索的Python环境)有一个.phonehome()可以在树/节点类对象上调用的方法.返回:

== Calling home... Got answer!

He11o alien,
How is everything in the Earth?
We miss you in Brodo Asogi.

I see you are in shape.
No updates are available.

== Do you want to leave any message?
(Press enter to finish)
Run Code Online (Sandbox Code Playgroud)

如果您想自己测试一下,请尝试:

from ete2 import Tree
t = Tree()      # generate random Tree
t.phonehome()   # communicate with Aliens!
Run Code Online (Sandbox Code Playgroud)

这是一个复活节彩蛋吗?

python messaging etetoolkit

-2
推荐指数
1
解决办法
247
查看次数