当前位置: 首页 > 知识库问答 >
问题:

当没有kafka broker运行时,如何禁用spring cloud stream以进行开发?

东郭阳德
2023-03-14

我有多个spring启动应用程序实现与Kafka经纪人的spring cloud stream。我想知道我是否可以停止或禁用spring cloud stream或kafka broker连接来启动应用程序。

共有1个答案

方绪
2023-03-14

您可以在类路径中添加一个noop绑定器,并使其成为默认绑定器,或者为您的绑定指定它。以下是Kotlin的一些代码:

NoOpBinder实现类:

package com.demo

import org.slf4j.LoggerFactory
import org.springframework.cloud.stream.binder.Binder
import org.springframework.cloud.stream.binder.Binding
import org.springframework.cloud.stream.binder.ConsumerProperties
import org.springframework.cloud.stream.binder.ProducerProperties
import org.springframework.messaging.MessageChannel

class NoOpBinder : Binder<MessageChannel, ConsumerProperties, ProducerProperties> {
    val logger = LoggerFactory.getLogger(javaClass)!!
    override fun bindConsumer(
        name: String,
        group: String,
        inboundBindTarget: MessageChannel,
        consumerProperties: ConsumerProperties
    ): Binding<MessageChannel> = NoOpBinding(name).also { logger.info("bindConsumer: $it") }

    override fun bindProducer(
        name: String,
        outboundBindTarget: MessageChannel,
        producerProperties: ProducerProperties
    ): Binding<MessageChannel> = NoOpBinding(name).also { logger.info("bindProducer: $it") }

    private class NoOpBinding(val binderName: String) : Binding<MessageChannel> {
        val logger = LoggerFactory.getLogger(javaClass)!!

        override fun getName() = binderName
        override fun unbind() {
            logger.info("unbind: $this")
        }

        override fun toString() = "NoOpBinding [$name]"
    }
}

配置类:

package com.demo

import org.springframework.context.annotation.Bean

// Warn: this class is referenced in META-INF/spring.binders and used by spring cloud stream to instantiate binders.
class NoOpBinderServiceConfigurer {

    @Bean
    fun noOpBinder() = NoOpBinder()

}

//资源/META-INF/spring.binders

noop: com.demo.NoOpBinderServiceConfigurer

在配置文件application.yml中指定绑定器

spring:
  cloud:
    stream:
      bindings:
        my-binding:
          destination: my-destination
          group: my-group
          binder: noop

或者在配置文件application.yml中指定默认绑定器

spring:
  cloud:
    stream:
      bindings:
        defaultBinder: noop

--

  • https://cloud.spring.io/spring-cloud-stream/spring-cloud-stream.html#multiple-binders
 类似资料:
  • 所以我已经开始为Bump开发,由于他们的短视,他们不支持基于x86的Android设备/模拟器。只有手臂。 08-06 17:58:30.895:E/AndroidRuntime(1799):java.lang.UnsatisfiedLinkError:无法从加载器Dalvik.System.PathClassLoader加载android-api[dexpath=/data/app/com.xx

  • 我更新到了新的Android Studio 4.0版,我面临一个令人恼火的问题 我相信是即时运行的结果(或者这个功能的新名称是什么)。基本上使用Android Studio运行/播放按钮,应用程序不会在设备上启动有时和不稳定。它总是安装,但有时无法启动。 我在过去有过类似的问题,只是禁用了即时运行,但是,在Android Studio 4.0中,我在任何地方都看不到任何选项来禁用它。我在某个地方读

  • 做了几个改动后,我得到了一个错误 会话“app”:安装apk时出错 根据一些人的说法,这是因为瞬间运行。 更新2:给重置一个镜头https://stackoverflow.com/a/19397632/1926621仍然一无所有。 更新3:不重复。一定是设定中的东西。一个完全干净的安装/重置完成了它。

  • 如果我从终端uvicorn main:app运行--重新加载一切工作。 当把它放在my_script.sh文件中时 然后什么都没发生。为什么? 我发现了这个:Uvicorn/FastAPI可执行文件,但似乎没有答案。

  • 我希望有人能帮助我。我正在使用RedHat BPMS官方文档中建议的REST API访问BPMS。我的问题是,如何在不启动bpm流程的情况下运行rools(.drl)并访问它们?我正在尝试使用BPMS作为规则存储库。我尝试与S-坡道,但没有成功,直到现在,我没有选择不使用BPMS。提前谢了。

  • 我将jquery UI sortable与两个表(使用connectlist)并排使用,效果非常好,除非其中一个表没有行,我无法将另一个表中的行拖到“空”表上,我想知道这是否受支持,或者我是否需要解决方法? 我有两张桌子相对排列(简化示例) 我有以下jQuery UI排序代码: 这是我的CSS: 如果其中一个表碰巧没有行,我将无法再将行拖到该表上。当我在firebug中查看时,我仍然可以看到TBO