簡體   English   中英

一個OSGi捆綁包中有多個駱駝藍圖?

[英]Multiple camel blueprints in one OSGi bundle?

我試圖弄清楚是否應該將多個blueprint.xml文件打包在一個要部署到karaf中的OSGi捆綁包中。 每個blueprint.xml文件都有一個駱駝上下文。 我試圖將我所有的藍圖都扔到OSGI-INF / blueprint文件夾中,但是出現錯誤提示

Name 'jms' is already in use by a registered component

這似乎很有意義,因為我在每個blueprint.xml中都這樣做

<bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
    <property name="connectionFactory">
        <bean class="org.apache.activemq.ActiveMQConnectionFactory">
            <property name="brokerURL" value="tcp://0.0.0.0:61616"/>
            <property name="userName" value="karaf"/>
            <property name="password" value="karaf"/>
        </bean>
    </property>
</bean>

我應該這樣做嗎? 還是將每個CamelContext都捆綁在一起會更好? 我已經看到了這個https://camel.apache.org/manual/latest/faq/why-use-multiple-camelcontext.html ,它說到將多個CamelContext作為獨立的包部署時才有意義。 那么,這里的最佳實踐是什么:

  • 每個帶有自己的blueprint.xml的CamelContext,都與必要的bean捆綁成osgi-bundle嗎?
  • 捆綁所有必需的bean,然后將blueprint.xml文件放入karaf的deploy文件夾中嗎?
  • 一個CamelContext導入所有其他CamelContext,並捆綁所有必需的bean?

這更多是關於服務設計的問題,而不是駱駝。

由於捆綁包是一個部署單元 ,因此我首先要研究代碼不同生命周期

如果某些東西必須始終部署在一起 ,如果它們不能單獨發展 ,則可以制作一個包含它們的捆綁包。 僅僅因為在發布和部署方面,您無法從將代碼分成較小的單元中受益。

另一方面,如果某些事物發展得更快或更慢 ,因此必須更頻繁地(或更少地)部署,則應將其放在自己的捆綁包中

這樣,您只有在代碼真正更改時才能部署代碼 與僅實現一個小錯誤修正時部署一個大型整體應用程序的巨大EAR文件相反。

因此,總而言之,您可以或多或少地使用微服務原則將代碼“切割”為單元。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM