任何人都可以解释 ActiveMQ 重新交付策略实际上是如何工作的吗?它是在客户端还是服务器端工作?
假设我有一个重新传递策略,最多可以重新传递 10 分钟的消息,每次尝试之间间隔 30 分钟,那么失败的消息究竟在哪里?
假设消息现在失败并且必须在 30 分钟后重新发送,那么消息在哪里?
我看到同一个消费者在 30 分钟后收到消息。
我想知道 ActiveMQ 在哪里存储此消息 30 分钟。
如果我关闭了消费者或我的消费者崩溃了,我能在 30 分钟后恢复消息吗?
我浏览了这些 ActiveMQ 页面以了解重新交付策略,但没有找到任何信息:
http://activemq.apache.org/redelivery-policy.html http://activemq.apache.org/message-redelivery-and-dlq-handling.html
我已将Spring DefaultMessageListenerContainer配置为消耗来自队列的消息的ActiveMQ使用者.我们称之为"Test.Queue"我将这些代码部署在4台不同的机器上,所有机器都配置到同一个ActiveMQ实例来处理来自同一"Test.Queue"队列的消息.
所有4台机器都启动并运行后,我将最大消费者大小设置为20,我看到消费者数量与队列数相比为80(4*最大消费者大小= 80)
当生成并发送到队列的消息变得很高时,一切都很好.
当有1000个消息时,在80个消费者中,让我们说其中一个被卡住它会冻结Active MQ以停止向其他消费者发送消息.
所有消息都永远停留在ActiveMQ中.
由于我有4台机器,最多有80名消费者,我不知道哪个消费者没有承认.
我停下来重新启动所有4台机器,当我停止那些卡住了坏消费者的机器时,消息再次开始流动.
我不知道如何配置DefaultMessageListenerContainer以放弃坏消费者并立即发信号通知ActiveMQ以开始发送消息.
即使没有Spring,我也可以创建场景,如下所示:
我创建了2个消费者(消费者A,B)并在一个消费者B的onMessage()方法中,我让线程长时间休眠(Thread.sleep(Long.MAX_VALUE)),其条件就像当前时间%13是0然后让线程进入休眠状态.
跑这两个消费者.
假设A,B,C由Spring的DefaultMessageListenerContainer管理,我如何调整Spring DefaultMessageListenerContainer以便在不能确认X秒数后将该坏消费者从池中(在我的情况下是消费者B)中取出,立即确认代理经纪人没有永久保留消息.
谢谢你的时间.
感谢我能解决这个问题.
我有以下 JSON。
{ "content" : "value" }
Run Code Online (Sandbox Code Playgroud)
我让杰克逊构建 JSON 字符串。
如果值是多行文本,例如:
A
B
C
Run Code Online (Sandbox Code Playgroud)
我看到的是: { "content" : "A\r\nB\r\nC" }
它\r\n为每一行显式设置(CRLF)。
我想知道我是否可以配置 Jackson 来输出这个:
{ "content" : "A
B
C" }
Run Code Online (Sandbox Code Playgroud)
这是; A、B 和 C 呈现为 3 行,而不是在 1 行中呈现为“A\r\nB\r\nC”。
我想将 maxPageSize 设置为比默认值 200 更大的数字。
这是我在 activemq.xml 文件中设置的方式:
<destinationPolicy>
<policyMap>
<policyEntries>
---
<policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb" maxPageSize="SOME_LARGE_NUMBER">
</policyEntry>
</policyEntries>
</policyMap>
</destinationPolicy>
Run Code Online (Sandbox Code Playgroud)
此更改帮助我使用 QueueBrowser.getEnumeration() 获取队列中的消息数,因为即使队列中的消息数大于 200,它也会返回 200。
请参阅:http : //docs.oracle.com/javaee/1.4/api/javax/jms/QueueBrowser.html QueueBrowser.getEnumeration()。
将 maxPageSize 从 200 更改为 1000 的副作用是什么?它会影响经纪人的表现吗?
除了此页面上的“一次从商店页面发送的持久消息的最大数量”之外,我没有看到有关此属性的任何文档:
http://activemq.apache.org/per-destination-policies.html
谢谢你的时间!
如何使用 Google 的 libphone 号码https://github.com/googlei18n/libphonenumber来查看电话号码是否是加拿大或美国的电话号码,因为它们共享相同的国家/地区代码?
例如:+1415-555-0123 是美国、旧金山 +1647-555-0123 是加拿大、多伦多
只需提供电话号码,我就需要获取国家/地区名称。
当我尝试类似以下内容时,它返回“true”,而我的期望是它应该返回 false,因为电话号码不是美国号码而是加拿大号码。
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
boolean isPossible = phoneUtil.isPossibleNumber("+16475550123", "US");
Run Code Online (Sandbox Code Playgroud) 在@Configuration类中引用applicationContext.xml时Spring不加载属性
@Configuration
@ImportResource("classpath:applicationContext.xml")
public class SpringConfig {
@Autowired
private MyBean1 myBean1;
@Bean
public static PropertySourcesPlaceholderConfigurer placeHolderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
@Bean(name = "myBean2")
public MyBean2 myBean2() {
MyBean2 bean2 = new MyBean2();
return bean2;
}
}
Run Code Online (Sandbox Code Playgroud)
applicationContext.xml中:
<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>classpath:test.properties</value>
</property>
</bean>
<bean id="myBean1" class="com.foo.bar.MyBean1">
<property name="name" value="${name}" />
<property name="age" value="${age}" />
</bean>
Run Code Online (Sandbox Code Playgroud)
Test.properties :(在类路径中)
name=foo
age=10
Run Code Online (Sandbox Code Playgroud)
当我使用以下代码行加载applicationContext.xml文件时,它工作正常:
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Run Code Online (Sandbox Code Playgroud)
我看到印有以下几行:
2015-05-30 10:01:08.277 [INFO] org.springframework.beans.factory.config.PropertyPlaceholderConfigurer:172 - Loading properties file from class …Run Code Online (Sandbox Code Playgroud) 假设我有"样本"这个词.在UTF-16 BE中,这表示为00 53 00 61 00 6D 00 70 00 6C 00 65.当我有这个时,我想用Java将它转换回"Sample".我该怎么做呢?
假设我有一个枚举类,如下所示:
public enum Lang {
ENGLISH("en_US"), FRENCH("fr_CA");
String val;
Lang(String val) {
this.val = val;
}
public String getValue() {
return val;
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个 POJO 如下:
public class Foo {
private String bar;
private Lang lang;
public String getBar() {
return bar;
}
public void setBar(String bar) {
this.bar = bar;
}
public Lang getLang() {
return lang;
}
public void setLang(Lang lang) {
this.lang = lang;
}
}
Run Code Online (Sandbox Code Playgroud)
如何配置 Jackson 以将以下有效负载转换为 POJO 类?
{ "bar": "someValue", "lang": "en-US"} …