[원본 출처] http://servicemix.apache.org/docs/5.0.x/activemq/activemq-camel-example.html


Using ActiveMQ with Camel (Camel을 가지고 ActiveMQ 사용하기)

Using Spring-DM (Spring-DM 사용하기)

It is often easy to define two application contexts for spring-dm, it helps you re-use configuration in Junit tests and cleanly separates OSGi from the normal spring application contexts.
그건은 종종 spring-dm을 위한 두개의 어플리케이션 컨텍스트를 정의하는 것이 쉽고 그것은 당신이 JUnit 테스트에서 환경구성을 재사용하고 보통의 Spring 어플리케이션 컨텍스트들로 부터 OSGi를 깨끗하게 분리하는 것을 돕는다.

You define these files in a bundle by adding them to the classpath under META-INF/spring
당신은 번들에서 META-INF/spring 폴더 아래 클래스패스에 그것들을 추가 함으로써 그 파일들을 정의하라

OSGi Application context (OSGi 어플리케이션 컨텍스트)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:tx="http://www.springframework.org/schema/tx"
  xmlns:ctx="http://www.springframework.org/schema/context"
  xmlns:osgi="http://www.springframework.org/schema/osgi"
  xmlns:osgix="http://www.springframework.org/schema/osgi-compendium"
  xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd
    http://www.springframework.org/schema/osgi-compendium http://www.springframework.org/schema/osgi-compendium/spring-osgi-compendium.xsd">

    <!-- Make sure we use the ServiceMix provided connection pool in our beans -->
    <osgi:reference id="jmsConnectionPool" interface="javax.jms.ConnectionFactory"/>

</beans>

Normal spring application context. (일반적인 Spring 어플리케이션 컨텍스트)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:camel="http://camel.apache.org/schema/spring"
       xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
        http://camel.apache.org/schema/spring
        http://camel.apache.org/schema/spring/camel-spring-${camel-version}.xsd">

    <camelContext xmlns="http://camel.apache.org/schema/spring">
        <route>
            <from uri="jms:queue:start"/>
            <to uri="mock:result"/>
        </route>
    </camelContext>

    <!-- This bean will import use the OSGi service from the context above -->
    <bean id="jms" class="org.apache.camel.component.jms.JmsComponent">
        <property name="connectionFactory" ref="jmsConnectionPool" />
        <!-- If you have a transaction manager configured
        <property name="transacted" value="true" />
        <property name="transactionManager" ref="transactionManager" />
        -->
    </bean>

</beans>



번역자 주) 한번에 전체를 지정해주는 것이 아니라 jms Connection 의 경우 OSGi 에 구현해 두고 일반적인 어플리케이션에서는 그것을 ref로 참조한 Jms 컴포넌트를 사용하는 것을 말한다.




[원본 출처] http://servicemix.apache.org/docs/5.0.x/activemq/index.html



Introducing ActiveMQ(ActiveMQ 소개하기)

Apache ActiveMQ is the most popular and powerful open source messaging and Integration Patterns provider.
Apache ActiveMQ는 가장 있기 있고 파워풀한 오픈 소스 메시징과 연계 패턴들을 제공하고 있다.
Apache ActiveMQ is fast, supports many Cross Language Clients and Protocols
and many advanced features while fully supporting JMS 1.1 and J2EE 1.4. Apache ActiveMQ is released under the Apache 2.0 License
Apache ActiveMQ는 빠르고 전체 JMS 1.1 과 J2EE 1.4 를 지원하기 때문에 많은 크로스 랭키지 클라이언트와 프로토콜들과 많은 진보된 지원하고 많은 진보된 기능을 지원한다. Apache AcitveMQ는 Apache 2.0 라이선스 하에서 릴리즈 되었다.

ActiveMQ Supports (ActiveMQ 지원)

Easy communication via Cross Language Clients
크로스 랭기쥐 클라이언트간 쉬운 통신

  • ActiveMQ C++ Clients

  • Ajax

  • C Integration

  • CMS

  • Delphi and FreePascal

  • dot Net

  • Perl

  • PHP

  • Pike

  • Python

  • Ruby

  • WebSockets

  • JMS to JMS Bridge

Several Protocols
몇가지 프로토콜

  • AMQP

  • OpenWire

  • REST

  • RSS and Atom

  • Stomp

  • WSIF

  • WS Notification

  • XMPP

Using ActiveMQ from ServiceMix(ServiceMix 에서 ActiveMQ 사용하기)

To start using ActiveMQ from your code, simply get a hold of the connection pool declared in the activemq-broker.xml file.
당신의 코드에서 ActiveMQ를 사용하는 것을 시작하기 위해 간단히 activemq-broker.xml 파일에 선언된 커넥션 풀을 잡아라

If you want to use ActiveMQ as a JBI component, configure servicemix-jms. You can also utilize ActiveMQ from Camel via the
camel-jms component.
만약 당신이 JBI 컴포넌트로서 ActiveMQ를 사용을 원하면, servicemix-jms 를 환경구성하라 당신은 또한 camel-jms 컴포넌트를 사용하여 Camel로 부터 ActiveMQ를 활용할 수 있을 것이다.

When should I use ActiveMQ?(언제 ActiveMQ를 사용해야 하는가?)

Whenever you have a unit of work or payload that you could process asynchronously, you would like to have multiple recipients, concurrent competing recipients to scale or leverage multiple processing units. If you want to spread load across multiple system boundaries. You want to cluster or provide fail over and messaging security, you have long running flows.
당신이 당신은 비동기적으로 진행할수 있는 업무나 페이로드의 한 묶음을 가지고 있을때마다. 당신은 복수의 응답자나 동시에 경쟁하는 응답자들이 확장 또는 복수의 절차를 진행하는 단위 활용하는 것을 하고 싶어 한다. 아마 당신이 복수의 시스템의 경계들을 지나 부하를 분산하기를 원한다. 당신은 클러스터링 하거나 장애처리나 메시지 보안을 제공하기를 원한다면 당신은 긴 실행흐름을 가

In any of these instances it would be strongly suggested you evaluate what a scalable and secure messaging solution can bring to the table.
그런 인스턴스의 어느 하나에서 그것은 당신이 확장성과 보안 메시징 솔루션이 테이블에 가지고 올수 있는 것이 무엇인지를 평가하는 것을 강력하기 제안될 것이다. 

Common use cases(일반적 사용 예)

Integration with other systems, since you can pass messages in and out of ActiveMQ from pretty much any programming language it is very simple to start integrating heterogeneous environments.
다른 시스템들을 통합에서 당신은 매우 많은 모든 프로그래밍 언어로 부터 AcitveMQ의 in 또는 out 메시지를 전달 할수 있기 때문에 그것은 이기종 환경들을 통합하기를 시작하는것이 매우 쉽다. 

Providing an event driven architecture. You can develop your solutions based on actions as opposed to looking for data or relying on completely synchronous behaviour.
이벤트 드리븐(기반) 아키텍처를 제공한다.  당신은 완전히 동기화된 동작에서 데이타나 찾거나 의존하는 것에 반대 되는 것으로써 실행에 기반하여 당신의 솔루션을 개발 할 수 있다.

Providing infrastructure for messaging across large distances, leverage the network connectors and broker networks to integrate for example geographically different data centres.
지리적으로 다른 데이타 센터를 위해 장거리, 네트워크 커텍터 활용과 연계하기 위한 브로커 네트워크들을 지나 메시징을 위한 기반구조를 제공한다. 



[원본 출처] http://servicemix.apache.org/docs/5.0.x/user/technology-selection.html


Technology selection guide(기술 선택 가이드)

ServiceMix 4 offers a set of different messaging and integration technologies:
ServiceMix 4 는 다른 메시징과 통합 기술 한 세트를 제공한다.

  • ActiveMQ

  • Camel

  • CXF

  • JBI

  • NMR

Depending on the solution you're building, you want to select one or more of these technologies. Below are some guidelines to help you pick the right mix for your problem.
만약 당신이 하나 또는 그 이상의 드 기술들을 선택하기를 원하면 당신이 만드는 솔루션에 종속되어 있다. 아래 당신의 문제를 올바르게 혼합하기 위해 선택하는 것을 도울 몇몇 가이드라인들이 있다.

When to use Camel? (언제 Camel을 사용하는가?)

For any integration scenario, we recommend to start as simple as possible. Camel allows you to build routes for integration scenario's quickly and efficiently. You can deploy these routes directly on ServiceMix by deploying the plain Spring XML route or by packaging the route in an OSGi bundle.
모든 연계 시나리오를 위해 우리는 가능한한 단순하게 시작 할 것을 추천한다. Camel 은 빠르고 충분히 통합의 시나리오를 위해 당신이 라우터를 빌드하는 것을 허용한다. 당신은 순수 Spring XML 라우터를 개발 함으로써 또는 OSGi 번들에 라우터를 패키징 함으로써 ServiceMix에 직접 그 라우터들을 배포할 수 있다. 

As you need more (advanced) features, start combining Camel with ActiveMQ, CXF and/or the NMR
좀 더 진보된 기능을 원하면 Camel을 ActiveMQ와 CXF와 그리고 NMR과 결합하는 것을 시작하라.

When to use ActiveMQ?(언제 ActiveMQ를 사용하는가?)

ActiveMQ is a JMS message broker, featuring support for clustering, pluggable persistence mechanism, master-slave configuration for failover, ...
ActiveMQ는 JMS 메시지 브로커이다. 클러스터링을 지원하고, 지속적인 메커니즘을 플러그 할수 있고, 장애조치(failover)를 위해 master-slave 환경구성을 하는 기능을 하고 있다.

ServiceMix 4 includes an instance of the ActiveMQ broker, which can be combined with Camel to provide easy-to-use message persistence and reliable messaging.
ServiceMix 4는 ActiveMQ 브로커의 인스턴스 하나를 포함한다. 그 인스턴스는 쉽게 사용할수 있는 메시지의 지속성과 신뢰할수 있는 메시지를  위해 Camel과 결합될 수 있다.

After setting up multiple instances of ActiveMQ (or ServiceMix 4) on the network, you can configure ActiveMQ clustering or master-slave mode to allow for a more reliable and scalable set-up.
네트워크 상에서 ActiveMQ ( 또는 ServiceMix 4)의 다수의 인스턴스를 설정한 뒤에 당신은 더 신뢰할수 있고 확장할수 있는 설정을 허용하기 위해 ActiveMQ 클러스터링 또는  master-slave 모드를 환경 구성할 수 있다.  

When to use CXF?(언제 CXF 를 사용하는가?)

CXF is an open-source services framework that you can use to suit your WS-* standards integration needs. It allows you to use common programming APIs like JAX-RS or JAX-WS for building your own services and to expose them to the outside world.

CXF 는 당신이 WS-* 표준 연계를 필요를 적합하게 하기 위해 사용할 수 있는 오픈소스 서비스 프레임워크이다.

You can use CXF from within your Camel routes with the Camel CXF component.
당신은 Camel CXF 컴포넌트를 사용하여 Camel 라우터들 안에서 CXF를 사용할 수 있다.

When to use NMR?(언제 NMR을 사용하는가?)

The NMR provides the basic ESB features for ServiceMix 4. You can use it to connect multiple camel routes in a lightweight way. It can also be used as a common transport on which you can add container-level auditing by registering your own ExchangeListener implementation.
NMR은 ServiceMix4를 위해 기본적인 ESB의 기능을 제공한다. 당신은 경량화된 방법에서 그것을 복수의 Camel 라우터들을 연결하기 위해 사용할 수 있다. 그것은 또한 당신이 당신 자신의 ExchangeListener 구현체를 등록함으로써 컨테이너 레벨의 심사하는 것을 추가 하기 위해서  보통의 운송으로 사용 될수 있다. 

When to use JBI?(언제 JBI를 사용하는가?)

We still support JBI 1.0 in ServiceMix 4 so you can leverage your previous investments and move your existing JBI artifacts from ServiceMix 3 to the new container with no/minimal changes before migrating them to use Camel and/or CXF directly. For new projects, you should consider JBI deprecated and always use Camel and/or CXF inside ServiceMix instead.
우리는 여전히 ServiceMix 4 에서 JBI 1.0을 지원한다. 그래서 당신은 Camel과 CXF를 직접 사용하기 위해 마이그래이션하기 전에 ServiceMix 3으로 부터 새 컨터에지로 없거나 최소의 변화로 당신의 이전 투자들의 이점을 가질수 있고 당신의 존재하고 있는 JBI 구조물들을 옮길수 있다.  새 프로젝트를 위해 당신은 사용되지 않는 JBI를 고려해야하고 대신에 ServiceMix 안쪽에 Camel 이나 또는 CXF를 항상 사용해야 한다. 


+ Recent posts