通过API调用停止和启动订阅者

时间:2017-11-29 14:26:45

标签: spring-cloud-stream spring-kafka

我一直试图停止并启动SubscribableChannel的订阅者,但似乎无法获取用于调用unsubscribe函数的MessageHandler。

使用MessageHandler的默认自动装配bean提供了一些默认的错误处理程序,而不是我想要取消订阅的通道。

实现这一目标的方法是什么?在运行时调用unsubscribe()subscribe()

我知道即将发布的暂停/恢复功能,但不能等待它,不能直接使用spring-kafka。因此,尝试将其作为替代方法。

https://github.com/spring-cloud/spring-cloud-stream-binder-kafka/issues/261

2 个答案:

答案 0 :(得分:0)

只是取消订阅该频道将无效(即使您可以)。必须暂停kafka消费者暂停交付或停止取消订阅该主题。取消订阅频道将导致容器抛出异常(没有订阅者)。

Spring Cloud Stream目前不支持从您的应用程序管理绑定生命周期;你必须关闭整个应用程序。

答案 1 :(得分:0)

似乎下一步可能:

EXPLAIN SELECT * FROM transactions WHERE user_id=1 FOR UPDATE;
+----+-------------+--------------+------------+------+---------------+------+---------+------+------+----------+-------------+
| id | select_type | table        | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra       |
+----+-------------+--------------+------------+------+---------------+------+---------+------+------+----------+-------------+
|  1 | SIMPLE      | transactions | NULL       | ALL  | user_id       | NULL | NULL    | NULL |    2 |    50.00 | Using where |
+----+-------------+--------------+------------+------+---------------+------+---------+------+------+----------+-------------+
1 row in set, 3 warnings (0.00 sec)