camel入门 xmpp tcp 配置 之XMPPReceiver

 

这个是服务器

 

package testxmpp;

import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.Producer;

import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.xmpp.XmppEndpoint;
import org.apache.camel.component.xmpp.XmppExchange;
import org.apache.camel.component.xmpp.XmppMessage;
import org.apache.camel.component.xmpp.XmppPrivateChatProducer;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.impl.DefaultEndpoint;
import org.apache.cxf.common.logging.Log4jLogger;
import org.apache.log4j.Logger;
import org.jivesoftware.smack.XMPPConnection;

import back.SendMessage;


/**
 * 上面例子的第一行创建一个一个RouteBuilder的匿名类的实例,这个匿名类需要实现 configure()方法。
 * camelContext.addRoutes(RouterBuilder builder)
 * 方法中调用了builder.setContext(this)方法,
 * 这样RouteBuilder对象就获得了与之对应的CamelContext的,然后调用builder.configure()方法。
 * 在configure方法中,可以调用例如 from(), filter(), choice(), when(),isEqualTo(),
 * otherwise()以及to()方法。 RouteBuilder.from(String uri)
 * 方法会调用与之对应的CamelContext的getEndpoint(uri)方法来获得指定的Endpoint,
 * 并用一个FromBuilder包装这个Endpoint。这样 FromBuilder.filter(Predicate predicate)
 * 方法就会创建一个在header("foo").isEqualTo("bar")这个表达式基础创建的Predicate(所谓的条件) 创建一个
 * FilterProcessor对象。就这样,通过定义这些操作我们逐渐构建出了一个Route对象
 * (使用RouterBuilder进行包装的)并且将这个Route对象添加进了与RouteBuilder所关联的CamelContext中。
 *
 */

public class XmppReceiver {

    public static void main(String[] s) {
       
        String host = "192.168.1.20" ;
        String port = "5201" ;
        try {
            CamelContext context = new DefaultCamelContext();
           
           
            // 增加路由的接点,可以是一个URL也可以是file://test这样一个中间接点,用于转到下个路由
            final Endpoint endpoint = context.getEndpoint("mina:tcp://"+host+":"+port);
            final XmppEndpoint xmppendpoint = new XmppEndpoint("xmpp://localhost:5200") ;
           
            context.addRoutes(new RouteBuilder() {
                public void configure() {
                    // from("queue:a").filter(header("foo").isEqualTo("bar")).to("queue:b");
                    from(endpoint).process(new Processor() {
                                public void process(Exchange e)
                                        throws Exception {

                                    Logger.getLogger(XmppReceiver.class).info("success!"+ header("foo").isEqualTo("bar"));

                                    e.getOut().setBody(e.getIn().getBody());
                                }
                            }).to("direct:start");

                    //选择的方式,如果被其中一个when选中,就不再往下走了。
                    from("direct:start").choice()
                            .when(new MessageFilter(body())).to("direct:a")
                            .when(new MessageFilter(body())).to("direct:b")
                            .otherwise().to("direct:c") ;
                   
                    from("direct:a").process(new Processor() {
                        public void process(Exchange arg0) throws Exception {
                            Logger.getLogger(XmppReceiver.class).info("To direct:a");
                            }
                    });

                    from("direct:b").process(new Processor() {
                        public void process(Exchange arg0) throws Exception {
                            Logger.getLogger(XmppReceiver.class).info("To direct:b");
                            }
                    });
                    from("direct:c").process(new Processor() {
                        public void process(Exchange arg0) throws Exception {
                            Logger.getLogger(XmppReceiver.class).info("To direct:c");
                        }
                    });
                }
            });

            context.start();
            Logger.getLogger(XmppReceiver.class).info("success!");
        } catch (Throwable ex) {
            ex.printStackTrace();
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值