`
wx1569567608
  • 浏览: 71174 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Apache Camel:Mina组件简单介绍

 
阅读更多

Apache Camel:Mina组件简单介绍

apache camel mina component是camel支持tcp、udp互通的一个组件。利用它你可以实现客户端与多个通讯服务器及多个通讯服务器之间的互通。但是缺省条件下实现不了这个目的,该插件仅仅默认提供了MinaConsumer和MinaProducer,通过配置camel路由可以实现MinaConsumer到MinaProducer的数据传送,但是对于MinaProducer到MinaConsumer的数据传送则没有代码提供,下面对其实现做一些简单介绍:

首先介绍两个概念

1、MinaConsumer,消费者的代表,它的主要作用是接受来自客户端的连接和负责与客户端的数据传输。当然了,方法是活的,你也可以让一个服务器主动连接过来。

2、MinaProducer,生产者的代表,它的主要作用是连接到通讯服务器并与之进行数据交互。当然了,如果一个客户端有侦听功能,你也可以连接过去。

现在我们介绍下代码上的实现

1、首先在MinaEndpoint类里添加一个MinaConsumer集合:

private static final CopyOnWriteArrayList<DefaultConsumer> consumers = new CopyOnWriteArrayList<DefaultConsumer>();

同时添加三个函数

public List<DefaultConsumer> getConsumers() {
        return consumers;
    }

public void addConsumer(DefaultConsumer consumer){
    consumers.add(consumer);
    }
    
    public void removeConsumer(DefaultConsumer consumer){
    consumers.remove(consumer);
    }

2、在MinaConsumer类中doStart()函数里添加如下代码:

endpoint.addConsumer(this);

同时在doStop()函数里添加如下代码:

endpoint.removeConsumer(this);

3、在MinaProducer类的内部类ResponseHandler的messageReceived函数里修改部分代码为如下:

try {

       int size = endpoint.getConsumers().size();
       if (size == 0) {
        LOG.warn("No consumers available on endpoint: "
          + endpoint + " to process " + exchange);
       } else if (size == 1) {

        DefaultConsumer consumer = endpoint.getConsumers()
          .get(0);
        // AsyncProcessor processor =
        // AsyncProcessorTypeConverter.convert(consumer.getProcessor());
        consumer.getProcessor().process(exchange);
       } else if (size > 1) {
               for (DefaultConsumer consumer : endpoint.getConsumers()) {

                     consumer.getProcessor().process(exchange);
               }
       }
      } catch (Exception e) {
       e.printStackTrace();
      }

通过以上三步就可以实现MinaProducer到MinaConsumer的数据传送了,然后通过配置camel路由就可以实现我们上面所说的互通了。

转载于:https://my.oschina.net/u/2332347/blog/637867

分享到:
评论

相关推荐

    apache camel 简介

    Apache Camel 可以轻松集成到各种Java应用程序中,包括与其他Apache项目,如ActiveMQ、CXF、MINA和ServiceMix的集成。它强调代码优先的开发方式,让开发者无需深入学习底层技术细节,即可实现大规模集成。通过使用...

    Apache Camel USER GUIDE Version 2.3.0

    1. **Language Appendix (语言附录)**:介绍了可用的语言和表达式。 2. **Pattern Appendix (模式附录)**:提供了关于企业集成模式的详细信息。 3. **Component Appendix (组件附录)**:详细列出了所有可用的组件...

    ca源码java-camel:ApacheCamel是一个开源集成框架,可让您快速轻松地集成使用或生成数据的各种系统

    ca原始Java 阿帕奇骆驼 是一个功能强大的开源集成框架,基于流行的...Camel都可以使您使用相同的API,从而可以与现成提供的所有组件进行交互,并且对API有了很好的了解。 Apache Camel具有强大的Bean绑定,并与流

    camel-manual-2.10.4.pdf

    - 语言附录:介绍各种编程语言和配置文件的Camel支持情况。 - 数据格式附录:解释如何在Camel中使用不同的数据格式。 - 模式附录:深入讨论Camel实现的各种集成模式。 - 组件附录:详细介绍各种Camel组件的功能和...

    camel-manual-2.4.0, 用户手册

    - **安装和设置**:介绍如何安装 Apache Camel 并将其设置为开发环境的一部分。 - **基本概念**:解释 Apache Camel 的核心概念,包括路由、处理器、端点等。 - **开发第一个应用程序**:指导用户通过一个简单的示例...

    camel-manual-1.5.0.pdf

    ### Apache Camel:基于Spring的集成框架 #### 一、引言与概述 Apache Camel是一款基于Spring框架的企业级集成工具,它实现了多种企业集成模式(Enterprise Integration Patterns,简称EIP),并提供了强大的Bean...

    camel2.2.0 手册

    - 引言(Introduction):介绍 Camel 的核心理念和功能。 - 快速入门(Quickstart):提供快速启动指南和示例。 - 开始(Getting Started):引导用户如何开始使用 Camel。 - 架构(Architecture):详细介绍 Camel ...

    camel-manual-2.8.0

    为了快速开始使用Apache Camel,读者可以从本章节的一些简单示例入手。这些示例将引导用户了解如何设置环境、创建基本的路由和处理消息传递。 ### 结论 Apache Camel 2.8.0版本为企业级集成提供了一个强大而灵活的...

    camel项目实例

    Apache Camel 采用URI来描述各种组件,这样你可以很方便地与各种传输或者消息模块进行交互,其中包含的模块有 HTTP, ActiveMQ, JMS, JBI, SCA, MINA or CXF Bus API。 这些模块是采用可插拔的方式进行工作的。Apache...

    Camel示例说明

    13. **JMX Component Example**:介绍了如何使用camel-jmx组件,允许对运行中的Camel应用程序进行JMX管理,实现远程监控和控制。 14. **LoadBalancing Mina Example**:展示了如何使用负载均衡EIP,通过MINA(一个...

    CAMEL核心开发指南

    - **Apache MINA**:这是一个高性能的、基于NIO的网络框架。 4. **集成模式**: CAMEL支持多种集成模式,这些模式定义了企业应用系统集成时的常见设计模式,从而帮助开发者在实现消息传递和数据转换等集成任务时...

Global site tag (gtag.js) - Google Analytics