代码片段(3)[全屏查看所有代码]
1. [代码]blueprint-context-netty-loadbalancer.xml
01 | <? xml version = "1.0" encoding = "UTF-8" ?> |
02 | < blueprint xmlns = "http://www.osgi.org/xmlns/blueprint/v1.0.0" |
03 | xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:context = "http://www.springframework.org/schema/context" |
04 | xmlns:cm = "http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0" |
05 | xmlns:jaxws = "http://cxf.apache.org/blueprint/jaxws" xmlns:camel = "http://camel.apache.org/schema/blueprint" |
06 | xsi:schemaLocation=" |
07 | http://www.springframework.org/schema/beans |
08 | http://www.springframework.org/schema/beans/spring-beans.xsd |
09 | http://www.springframework.org/schema/context |
10 | http://www.springframework.org/schema/context/spring-context.xsd |
11 | http://www.osgi.org/xmlns/blueprint/v1.0.0 |
12 | http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"> |
13 |
14 |
15 |
16 | < bean id = "properties" |
17 | class = "org.apache.camel.component.properties.PropertiesComponent" > |
18 | < property name = "location" value = "file:${karaf.base}/deploy/camel-loadbalance.properties" /> |
19 | < bean id = "service" |
20 | class = "cn.com.cardinfo.service.nocardpayment.action.PackageAction" /> |
21 | < bean id = "logService" class = "cn.com.cardinfo.service.nocardpayment.action.LogAction" /> |
22 | <!-- open mq config --> |
23 | < bean id = "openmq" class = "org.apache.camel.component.jms.JmsComponent" > |
24 | < property name = "connectionFactory" ref = "mqConnectionFactory" /> |
25 | </ bean > |
26 | < bean id = "mqConnectionFactory" |
27 | class = "cn.com.cardinfo.service.nocardpayment.jmsfactory.OpenMQConnectionFactory" |
28 | scope = "singleton" > |
29 | < property name = "configuration" > |
30 | < props > |
31 | < prop key = "imqAddressList" >localhost:7676</ prop > |
32 | < prop key = "imqDefaultPassword" >admin</ prop > |
33 | < prop key = "imqDefaultUsername" >admin</ prop > |
34 | < prop key = "imqAddressListBehavior" >PRIORITY</ prop > |
35 | </ props > |
36 | </ property > |
37 | </ bean > |
38 | < camelContext xmlns = "http://camel.apache.org/schema/blueprint" > |
39 | < route id = "tcpReceiver" > |
40 | < from |
41 | uri = "netty:tcp://{{balance.host}}:{{balance.port}}?textline=true&delimiter=NULL&noReplyLogLevel=ERROR" /> |
42 | < bean ref = "service" method = "createReport" /> |
43 | < to uri = "direct:loadbalance" /> |
44 | </ route > |
45 |
46 | < route id = "JmsReceiver" > |
47 | < from |
48 | uri = "openmq:queue:{{queue}}?exchangePattern={{exchangePattern}}&replyTo={{replyTo}}&replyToType={{replyToType}}&concurrentConsumers={{concurrentConsumers}}&maxConcurrentConsumers={{maxConcurrentConsumers}}" ></ from > |
49 | < bean ref = "service" method = "createReport" /> |
50 | < to uri = "direct:loadbalance" /> |
51 | </ route > |
52 |
53 | < route id = "loadbalancer" > |
54 | < from uri = "direct:loadbalance" /> |
55 | < loadBalance > |
56 | < roundRobin /> |
57 | < camel:to uri = "netty:tcp://{{node.host1}}:{{node.port1}}?sync=true" /> |
58 | < camel:to uri = "netty:tcp://{{node.host2}}:{{node.port2}}?sync=true" /> |
59 | </ loadBalance > |
60 | < bean ref = "logService" method = "log" /> |
61 | < log message = "${body}" /> |
62 | </ route > |
63 | </ camelContext > |
64 | </ blueprint > |
2. [代码][Java]代码
01 | import java.util.Properties; |
02 |
03 | import javax.jms.JMSException; |
04 |
05 | import com.sun.messaging.InvalidPropertyException; |
06 | import com.sun.messaging.jmq.jmsclient.JMSXAQueueConnectionFactoryImpl; |
07 |
08 | public class OpenMQConnectionFactory extends JMSXAQueueConnectionFactoryImpl { |
09 |
10 | private static final long serialVersionUID = 1L; |
11 | private Properties configuration; |
12 |
13 | public void setConfiguration(Properties configuration) { |
14 | this .configuration = configuration; |
15 | } |
16 |
17 | /** |
18 | * Returns a single configuration property value given the property name. |
19 | * |
20 | * @param propname |
21 | * The name of the configuration property. |
22 | * |
23 | * @return The value of the configuration property <code>propname</code>. |
24 | * |
25 | * @exception InvalidPropertyException |
26 | * If an invalid property name is being requested. The |
27 | * Exception string is the name of the invalid property. |
28 | */ |
29 | @Override |
30 | public String getProperty(String propname) throws JMSException { |
31 | if (propname == null ) { |
32 | throw new InvalidPropertyException(propname); |
33 | } |
34 | // Convert JMQ prefix if present to imq prefix |
35 | if ((propname.length() > 3 ) && (propname.startsWith( "JMQ" ))) { |
36 | propname = "imq" + propname.substring( 3 ); |
37 | } |
38 | String propval = (String) configuration.get(propname); |
39 | if (propval == null ) { |
40 | super .getProperty(propname); |
41 | } |
42 | if (propval == null ) { |
43 | throw new InvalidPropertyException(propname); |
44 | } |
45 | return propval; |
46 | } |
47 |
48 | } |
3. [代码]log conf
01 | # Root logger |
02 | log4j.rootLogger=INFO, out, osgi:* |
03 | log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer |
04 |
05 | # To avoid flooding the log when using DEBUG level on an ssh connection and doing log:tail |
06 | log4j.logger.org.apache.sshd.server.channel.ChannelSession = INFO |
07 |
08 | # CONSOLE appender not used by default |
09 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender |
10 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout |
11 | log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n |
12 |
13 | # File appender |
14 | log4j.appender.out=org.apache.log4j.RollingFileAppender |
15 | log4j.appender.out.layout=org.apache.log4j.PatternLayout |
16 | log4j.appender.out.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n |
17 | log4j.appender.out.file=${karaf.data}/log/karaf.log |
18 | log4j.appender.out.append=true |
19 | log4j.appender.out.maxFileSize=1MB |
20 | log4j.appender.out.maxBackupIndex=10 |
21 |
22 | # Sift appender |
23 | log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender |
24 | log4j.appender.sift.key=bundle.name |
25 | log4j.appender.sift.default=karaf |
26 | log4j.appender.sift.appender=org.apache.log4j.FileAppender |
27 | log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout |
28 | log4j.appender.sift.appender.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %-32.32C %4L | %m%n |
29 | log4j.appender.sift.appender.file=${karaf.data}/log/$\\{bundle.name\\}.log |
30 | log4j.appender.sift.appender.append=true |
31 |
32 | # nocard appender |
33 | log4j.appender.nocard=org.apache.log4j.RollingFileAppender |
34 | log4j.appender.nocard.layout=org.apache.log4j.PatternLayout |
35 | log4j.appender.nocard.layout.ConversionPattern=%d{ISO8601} | %-32.32C{1} | %m%n |
36 | log4j.appender.nocard.file=${karaf.data}/log/nocard.log |
37 | log4j.appender.nocard.append=true |
38 |
39 | # mpi appender |
40 | log4j.appender.mpi=org.apache.log4j.RollingFileAppender |
41 | log4j.appender.mpi.layout=org.apache.log4j.PatternLayout |
42 | log4j.appender.mpi.layout.ConversionPattern=%d{ISO8601} | %-32.32C{1} | %m%n |
43 | log4j.appender.mpi.file=${karaf.data}/log/mpi.log |
44 | log4j.appender.mpi.append=true |
45 |
46 | #Log nocardpayment commands to separate file |
47 | log4j.logger.cn.com.cardinfo.service.nocardpayment=INFO, nocard |
48 | log4j.additivity.cn.com.cardinfo.service.nocardpayment=false |
49 |
50 | #Log mpi commands to separate file |
51 | log4j.logger.mpi=INFO, mpi |
52 | log4j.additivity.mpi=false |