小编Mar*_*tin的帖子

ActiveMQ vs Apollo vs Kafka

我之前没有任何使用*MQ的经验,而且我希望通常能够构建有关JMS和消息队列的知识.这样,我想知道我是应该从ActiveMQ开始,还是只是"忽略"它,然后开始自学阿波罗.Apollo是否像ActiveMQ一样功能齐全?它是否实现了JMS 2.0(我看到ActiveMQ卡在1.1中)?我会遗漏一些非常重要的东西吗?

另外,Kafka与这两种解决方案相比如何?

activemq-classic jms message-queue apache-kafka apollo

63
推荐指数
3
解决办法
5万
查看次数

对于带有限定符@Default的类型X的不满意依赖项

我正在尝试Greeter在Wildfly 8.2内部运行的EJB上注入给定类型()的对象.但是,部署始终会失败并显示消息

Unsatisfied dependencies for type Greeter with qualifiers @Default
Run Code Online (Sandbox Code Playgroud)

我试图用注释GreeterImpl和注入点注释,@Default但这也没有用.我在这里错过了什么吗?

我的Greeter界面:

public interface Greeter {
    public void sayHi();
}
Run Code Online (Sandbox Code Playgroud)

我的GreeterImpl班级(唯一实施的班级Greeter):

public class GreeterImpl implements Greeter {
    private static final Logger LOGGER = LoggerFactory.getLogger(GreeterImpl.class);

    @Override
    public void sayHi() {
        LOGGER.info("Hi!");
    }
}
Run Code Online (Sandbox Code Playgroud)

我的ScheduledGreeterEJB:

@Stateless
public class ScheduledGreeter {
    @Inject
    private Greeter greeter;

    @Schedule(second = "*/15", minute = "*", hour = "*")
    public void sayHi() {
        greeter.sayHi(); …
Run Code Online (Sandbox Code Playgroud)

code-injection java-ee cdi

14
推荐指数
1
解决办法
3万
查看次数

"频道关闭:连接错误"

我在AWS上设置了一个带有两个节点的RabbitMQ集群,并按此处所述启用了HA .然后,我将Elastic Load Balancer映射5672到实例的5672端口,并对实例的15672端口(HTTP管理端口)进行定期运行状况检查.然后,我启动了两个监听器(每个节点一个),每个监听器有4个消费者,并指向spring.rabbitmq.host负载均衡器的DNS.但是,我定期收到以下错误:

[E] [2015-03-14 23:13:23,890] [pool-4-thread-9         ] [CachingConnectionFactory        ] [                                    ] Channel shutdown: connection error
[E] [2015-03-14 23:13:23,891] [pool-4-thread-9         ] [CachingConnectionFactory        ] [                                    ] Channel shutdown: connection error
[E] [2015-03-14 23:13:23,891] [pool-4-thread-9         ] [CachingConnectionFactory        ] [                                    ] Channel shutdown: connection error
[E] [2015-03-14 23:13:23,891] [pool-4-thread-9         ] [CachingConnectionFactory        ] [                                    ] Channel shutdown: connection error
[W] [2015-03-14 23:13:24,758] [impleAsyncTaskExecutor-5] [SimpleMessageListenerContainer  ] [                                    ] Consumer raised exception, processing can restart …
Run Code Online (Sandbox Code Playgroud)

load-balancing amazon-ec2 rabbitmq spring-amqp

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

防止'PersistentObjectException'

我有一个非常基本的JAX-RS服务(BookService下面的类),它允许创建类型的实体Book(也在下面).POST有效载荷

{
    "acquisitionDate": 1418849700000,
    "name": "Funny Title",
    "numberOfPages": 100
}
Run Code Online (Sandbox Code Playgroud)

成功地坚持Book并返回201 CREATED.但是,id在有效负载上包含具有任何非空值的属性会触发org.hibernate.PersistentObjectException消息detached entity passed to persist.我理解这意味着什么,并且id在创建对象时包含有效负载(在这种情况下)是没有意义的.但是,我宁愿防止这个异常一直向上冒泡,并400 BAD REQUEST在这种情况下向我的用户呈现(或者,至少完全忽略该属性).但是,有两个主要问题:

  1. 到达的异常create是一个EJBTransactionRolledbackException,我必须一直爬到堆栈跟踪中以发现根本原因;
  2. 根本原因是org.hibernate.PersistentObjectException- 我正在部署到使用Hibernate的Wildfly,但我想保持我的代码可移植,所以我真的不想捕获这个特定的异常.

据我了解,有两种可能的解决方案:

  1. book.setId(null)之前使用bookRepo.create(book).这将忽略id属性携带值并继续执行请求的事实.
  2. 检查是否可以将book.getId() != null类似的内容IllegalArgumentException映射到400状态代码.似乎是更好的解决方案.

但是,来自其他框架(例如Django Rest Framework)我真的更喜欢这个由框架本身来处理......我的问题是,是否有任何内置的方法来实现这种行为我可能不见了?

这是BookService班级:

@Stateless
@Path("/books")
public class BookService {
    @Inject
    private BookRepo …
Run Code Online (Sandbox Code Playgroud)

java jpa jax-rs java-ee

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

RabbitAdmin - 热切宣言

我使用Spring AMQP设置不同的服务之间的远程调用,描述在这里。然而,当我reply-timeout在我的配置上设置 a时,第一个请求总是失败,因为声明队列、交换和绑定所花费的时间超过了超时:

RabbitAdmin 组件可以在启动时声明交换、队列和绑定。它通过 ConnectionListener 懒惰地执行此操作,因此如果代理在启动时不存在,则无关紧要。第一次使用连接(例如通过发送消息)时,侦听器将被触发并应用管理功能。

有什么方法可以在启动时急切地进行声明,而不是在第一个发布事件上进行声明,以防止第一个请求总是失败?

java spring spring-amqp

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