- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在尝试重新制作 Adam Bein 的视频 Going Asynchronous with CompleteableFuture and JavaEE 7 ),本质上它是触发一个包含 Consumer 的事件并在另一个类中观察它。在他使用“LambdaFish”应用程序服务器的视频中,我找不到任何其他对此的引用,所以我尝试使用 WAS Liberty、Glassfish 4 和 Wildfly 运行代码。都产生了相同的结果,即没有观察到消费者事件。我在我的测试用例中尝试了各种其他类,并且都运行良好,只有 Consumer 似乎证明了这个问题。
我还没有找到一种合适的方法来追踪“幕后”发生的事情,我希望追踪一个工作和非工作事件,看看我们“偏离轨道”的地方。
这是一个简单的问题,可以使用以下代码重新创建:-
制作人
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.enterprise.event.Event;
import javax.inject.Inject;
@Stateless
@LocalBean
public class Producer {
@Inject Event<Consumer<String>> ce;
@Inject Event<List<Object>> oe;
public void produce() {
Consumer<String> c = (x) -> System.out.println(x.toLowerCase());
ArrayList<Object> al = new ArrayList<Object>();
System.out.println("Firing Events");
ce.fire(c);
oe.fire(al);
System.out.println("Events fired");
}
}
观察者
package event.controller;
import java.util.ArrayList;
import java.util.function.Consumer;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.enterprise.event.Observes;
@Singleton
@Startup
public class Observer {
public void onStuff(@Observes Consumer<String> cs) {
System.out.println("consumer event triggered");
cs.accept("Hi There");
}
public void onStuff2(@Observes ArrayList<Object> al) {
System.out.println("ArrayList event triggered");
}
}
这只是我尝试过的众多排列组合中的一种;都没有成功。我还尝试按照本文 Glassfish Tracing with log4j 中的描述设置 Glassfish 跟踪,这篇文章似乎已经过时了。我无法使用插件在 eclipse 下启动 Glassfish,当我尝试定义服务器时出现“内部错误”。
我还使用 =info:JCDI=all:com.ibm.ws.webbeans=all:org.apache.webbeans*=all:org.jboss.weld 尝试了 WAS Liberty CDI 跟踪*=all:com.ibm.ws.cdi*=all:EJBContainer=all:MetaData=all:Injection=all
但在 event.fire() 期间没有触发任何跟踪事件。
我的做法有什么根本性的错误吗?
有没有人设法触发包含消费者的事件并成功观察到它?
有谁知道可以使用任何跟踪工具来确定为什么一种情况有效而另一种情况无效?
提前感谢您提出任何意见和/或建议。
最佳答案
您做对了,但是您偶然发现了 Weld(CDI 引用实现)中的一个已知错误,您在上面命名的所有服务器都使用该错误。我不确定 Open Web Beans(替代 CDI impl)是否对此有更好的解决方案,但您可以查看。
可以找到相关的焊缝跟踪问题here可以找到链接到它的 CDI 规范问题 here .解决这些问题后,您应该能够执行您的代码。
我能想到的唯一“解决方法” 是使用原始类型 观察器。即:
public void onStuff(@Observes Consumer cs) {
System.out.println("consumer event triggered");
cs.accept("Hi There");
}
这个观察者当然更通用,并且会触发任何其他带有 Consumer
有效负载的触发事件,但是您可以在方法内部自由地进行一些额外的检查,以确定您是否真的想触发任何是否采取行动。
关于java - 包含 Consumer 的事件将被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39005294/
我已经开始研究 MassTransit 并正在编写将处理消息的类。当我从 Consumes 实现接口(interface)时我有四个选项:All , Selected , For和 Context .
我正在尝试找出消费者群体级别是否也有任何抵消。在 Kafka 中,Consumer Offset 是在 Consumer group 级别还是在该 consumer group 内的单个消费者? 最佳
我有一个我不理解的 java 编译器错误。看来消费者 和 Consumer(带有 T 扩展对象)在方法签名参数中不等效。请查看以下代码: import java.util.function.Consu
我在泛型方面遇到了一些麻烦,尽管找到了解决方法,但我不明白是什么阻止了我的代码编译。 我有一个显示 TreeTableView 的 JavaFX 项目:
C++11 标准定义了一个内存模型(1.7、1.10),其中包含内存排序,大致为“顺序一致”、“获取”、“消耗”、“释放”和“放松”。同样粗略地,一个程序只有在它是无种族的情况下才是正确的,如果所有
我有一个 kafka 主题,我正在通过 Kafka Producer 发送数据。现在,在消费者方面,我有两种选择。 1。使用 KafkaConsumer - 下面是 kafkaConsumer 的代码
我有四个当前消费者在 Amazon AWS 上收听同一个队列。从队列中拉取消息时,有时会出现同一条消息被两个不同的消费者消费的情况。请看下面的日志: 18:01:46,515 [jmsContaine
我正在设计一个系统,其中将有 n 个生产者和 m 个消费者,其中 n 和 m 是数字,n != m。 我想这样设计系统, 任何生产者在生产时不得阻止其他生产者 任何消费者都不应在消费时阻止其他消费者
我们有一个系统,我们希望将记录(例如联系人、客户、机会)从我们的系统推送到 SalesForce。 为此,我们使用了 ForceToolKit for .Net .我们成功地将联系人记录从我们的系统推
我怎样才能写一个方法来组合 Stream的 Consumers成单个 Consumer使用 Consumer.andThen(Consumer) ? 我的第一个版本是: Consumer combi
我需要开始使用 kafka。我很难理解消费者应该收到什么:据我了解,我们可以通过多种方式配置消费者: 示例 1: @KafkaListener(topics = "topic_name) public
我需要开始使用 kafka。我很难理解消费者应该收到什么:据我了解,我们可以通过多种方式配置消费者: 示例 1: @KafkaListener(topics = "topic_name) public
我正在尝试在我的 scala play 应用程序中创建消费者 secret / key 对,但我似乎无法让它正常工作。我有以下代码 import org.apache.commons.codec.bi
我通过传递用户(消费者)名称使用 .NET 应用程序,我需要从 Salesforce 检索消费者 key 和消费者 key ,我该如何实现。 最佳答案 Consumer Key 和 Consumer
我想设置 至 0 .这似乎是另一个问题 ( JMS queue with multiple consumers ) 的答案,并在此 article 中进行了描述。在第 17.1.1 章中。我使用 JN
I have send message api to my users.When I send to message from my x numbers I need to wait 10-15
我有一个 java Kafka 消费者,我在其中批量获取 ConsumerRecords 进行处理。示例代码如下- while (true) { ConsumerRecords records
我正在为 iPhone 编写 Twitter/Facebook 应用程序。我有自己的 Apache/PHP 服务器。我只想把Consumer Key放在app里,然后我把Consumer Secret
Spring AMQP:比较多个消费者与每个消费者多个线程的性能 我正处于从 Spring 文档学习 Spring AMQP 的阶段。我不清楚提高异步消息消费率的首选方法:根据 Spring 文档 (
我正在制作一个需要 oAuth 1.0 身份验证的应用程序。我可以访问客户提供的消费者 key 和消费者 secret 。我曾尝试使用 AFNetworking 进行此操作,但效果不佳。有人可以建议我
我是一名优秀的程序员,十分优秀!