我的实验应用程序非常简单,尝试使用Actor和Akka可以做什么。
JVM启动后,它创建了一个带有几个普通角色的角色系统,即JMS消费者(akka.camel.Consumer)和JMS生产者(akka.camel.Producer)。它在演员和JMS制作人之间传递一些信息-
我时不时地遇到奇怪的行为:似乎时不时地,应该发送到JMS服务器的第一条消息不知何故丢失了。通过查看我的应用程序日志,我可以看到应用程序正在尝试发送消息,但JMS服务器从未接收到它。(每次运行我都必须启动JVM
Akka Camel文档提到,有些组件可能一开始就没有完全初始化:“有些Camel组件可能需要一段时间才能启动,在某些情况下,您可能想知道endpoint何时激活并准备好使用。”
我尝试实现以下操作以等待Camel初始化
val system = ActorSystem("actor-system")
val camel = CamelExtension(system)
val jmsConsumer = system.actorOf(Props[JMSConsumer])
val activationFuture = camel.activationFutureFor(jmsConsumer)(timeout = 10 seconds, executor = system.dispatcher)
val result = Await.result(activationFuture,10 seconds)
这似乎有助于解决这个问题。(尽管现在删除这一步骤后,我无法再重现此问题...:/).
我的问题是,这是否是确保所有组件完全初始化的正确方法?
我应该用吗
val future = camel.activationFutureFor(actor)(timeout = 10 seconds, executor = system.dispatcher)
Await.result(future, 10 seconds)
每个akka.camel。制作人和akka.camel。消费者参与者是否要确保一切都正确初始化?
这就是我应该做的,还是也应该做其他事情?文档在这方面不干净,也不容易测试,因为问题只是偶尔发生的…
在发送任何消息之前,您需要初始化骆驼JMS组件和生产者。
import static java.util.concurrent.TimeUnit.SECONDS;
import scala.concurrent.Future;
import scala.concurrent.duration.Duration;
import akka.dispatch.OnComplete;
ActorRef producer = system.actorOf(new Props(SimpleProducer.class), "simpleproducer");
Timeout timeout = new Timeout(Duration.create(15, SECONDS));
Future<ActorRef> activationFuture = camel.activationFutureFor(producer,timeout, system.dispatcher());
activationFuture.onComplete(new OnComplete<ActorRef>() {
@Override
public void onComplete(Throwable arg0, ActorRef arg1)
throws Throwable {
producer.tell("First!!");
}
},system.dispatcher());
我错过了什么? AMQ版本5.13.2 Java 1.8.0\u 74 Windows 10 给定一个简单的测试用例,传输两条Object消息,一条带有数据,另一条是数据结束标记。只有数据结束标记被接收。 队列在作业开始时创建,并在作业完成后销毁。 如果我运行更多的事务,我会看到大约50%的接收率。 日志清楚地显示接收器在第一条消息被放入队列之前就已启动,两条消息都被放入队列,但实际上只有第二条消
我正在使用hiredis C库连接到redis服务器。我不知道在订阅新消息后如何等待新消息。 我的代码如下所示: 现在如何告诉雇佣者在频道上等待消息?
版本: SpringBoot: 2.3.12。发布 SpringCloud:Hoxton。SR12 SpringCloud Starter Sleuth: 3.0.3 骆驼: 3.4.6 我想将Sleuth添加到一个预先存在的项目中,该项目现在使用ActiveMQ,以前它使用JMS。当我这样做时,ActiceMQ消息中的值会被阻止/删除(其中一个是“filename”,它是S2请求的键值)。其他J
主要内容:一、业务场景,二、意外宕机,问题凸现,三、总结一、业务场景 这篇文章,我们来看看订单服务和消息服务是如何基于MQ来收发消息的。 我们稍微把这个图细化一点,简单来说就是多个订单服务实例给queue推送消息,多个仓储服务每个消费一部分消息。如下图所示: 二、意外宕机,问题凸现 假如你线上对MQ技术的使用就到此为止了,那么基本可以跟offer说拜拜了。。。 因为如果是我的话,作为一个面试官就没法继续往下问了。你这个MQ的使用以及理解的深度仅此而已的
问题内容: 我正在使用hiredis C库连接到redis服务器。我无法弄清楚订阅新消息后如何等待新消息。 我的代码如下所示: 现在如何告诉hiredis在频道上等待消息? 问题答案: 您无需告诉hiredis您需要在通道上等待:事件循环将仅在先前已注册的Redis连接上等待。 这是一个完整的示例: 您可以通过使用以下命令发布内容来对其进行测试: event_base_dispatch函数是实际启
同事, 你能帮我解决以下问题吗? 我有JavaEE应用程序。它包含一些具有业务逻辑的消息驱动Bean和一些负责整个应用程序配置的不同方面的管理Bean。我想设置bean启动和初始化的顺序。这意味着在管理Bean完成应用程序的初始化之前,容器不应该调用消息驱动Bean。应用程序的初始化包括读取和解析一些配置文件,这需要一些时间。 有WebSphere配置选项吗? 或者它应该只以编程方式完成技巧?