我正在为Kafka主题编写侦听器,并使用@kafkaListener注释来做同样的事情。到目前为止,我硬编码了主题名(topic1),效果很好。这是一个有效的代码:-
@Component
public class KafkaConsumer {
@Autowired
private KafkaProperties kafkaProps;
@Autowired
@Qualifier("CustomObjectMapper")
private ObjectMapper objectMapper;
@KafkaListener(topics = "topic1", containerFactory = "createPokafkaListenerContainerFactory")
public void CreatePoListener(PurchaseOrder po, Acknowledgment ack)
throws JsonProcessingException {
LOG.info("Received message for po create from kafka topic {} is {}",
kafkaProps.getOmsCreateTopicName(), objectMapper
.writerWithDefaultPrettyPrinter().writeValueAsString(po));
ack.acknowledge();
}
}
现在,当我试图更改代码以从代码中获取主题名称时,它不起作用。代码,我试图从代码中获取值后,在堆栈溢出(如何将动态主题名称传递给@kafkalistener(主题从环境变量)是:-
@Component
public class KafkaConsumer {
@Autowired
private KafkaProperties kafkaProps;
public KafkaProperties getKafkaProps() {
return kafkaProps;
}
@Autowired
@Qualifier("CustomObjectMapper")
private ObjectMapper objectMapper;
@KafkaListener(topics = "#{__listener.kafkaProps.getOmsCreateTopicName()}", containerFactory = "omsCreatePokafkaListenerContainerFactory")
public void CreatePoListener(PurchaseOrder po, Acknowledgment ack)
throws JsonProcessingException {
LOG.info("Received message for po create from kafka topic {} is {}",
kafkaProps.getOmsCreateTopicName(), objectMapper
.writerWithDefaultPrettyPrinter().writeValueAsString(po));
ack.acknowledge();
}
}
当我试图启动服务器时,它抛出错误:-
bean初始化失败;嵌套的异常是org。springframework。豆。工厂BeanExpressionException:表达式解析失败;嵌套的异常是org。springframework。表示斯佩尔。SpelEvaluationException:EL1008E:在类型为“org”的对象上找不到属性或字段“_listener”。springframework。豆。工厂配置。BeanExpressionContext’——可能不公开?
谁能帮帮我我做错了什么?
在消费者类别中,您需要进行以下更改:
@Autowired
public KafkaProperties kafkaProps;
@KafkaListener(topics = "#{kafkaConsumer.kafkaProps.getOmsCreateTopicName()}"
这对我很管用。
1.1.x不再受支持;如果无法升级到Spring Framework 4.3之外,则应升级到1.3.10,这是与Spring 4.3一起使用的最新版本;它有一个比1.1更简单、更可靠的线程模型。x、 多亏了KIP-62。
虽然您不能在1.3. x中使用__listener
,但您可以使用SpEL表达式直接从KafkaProperties
bean获取主题:
@KafkaListener(topics = "#{kafkaProps.omsCreateTopicName}" ...)
我已经为我的应用程序实现了材质设计,我希望用户能够自定义colorPrimary、colorPrimaryDark和colorAccent的颜色。怎么做? 我想有一个设置活动,用户可以选择自己的颜色,更改将应用于我的所有活动。谢谢
我在Vaadin7做一个项目。因为我需要改变一个页面的主题。 但在Vaadin 7里,我找不到这样的。 我知道会有办法做到的。 以及当我更改主题时如何在UI上应用更改?
问题内容: 我想强制Chrome调试器 通过代码 或使用某种注释标签(例如)来中断一行 代码。 问题答案: 您可以在代码中使用。如果开发者控制台已打开,则执行将中断。它也可以在萤火虫中使用。
我想设置我的应用程序主题使用设置首选项我已经创建。这是我的密码。告诉我这之后怎么编码。mainactivity.java SettingsActivity.java SettingsFragment.java
这不是如何配置主题选项的副本,从这样的答案中可以清楚地看出。 我想修改或调整当前设置,意思是:我想加载当前配置的内容。例如,当前为配置的值,以便能够稍微调整它,比如使颜色更亮。 当我在中加载此键时,我看到默认为红色(),这显然不是主题所拥有的。 我知道我可以 1) 打开 2) 找到设置和 3) 复制/粘贴我的用户设置。但我正在寻找一种更友好/更简单的方法。 有没有更友好/更简单的方法?如何在我的用
问题内容: 在我的文件中,具有以下内容。但是,容器不会选择主机名值。有任何想法吗? 当我检查容器中的主机名时,它没有启动。 问题答案: 我发现使用时主机名对其他容器不可见。事实证明这是一个已知问题(也许是一个已知功能),其中一部分讨论是: 我们可能应该在文档中添加有关使用主机名的警告。我认为它很少有用。 就容器网络而言,分配主机名的正确方法是定义一个别名,如下所示: 不幸的是,这 仍然 无法使用。