Apache camel 使用camel-smpp限制长sms
我想知道如何在长短信的驼峰smpp端点上对传出短信进行限制。长短信分解得更小,最大大小为160个字符。如果我使用驼峰节流,它将应用于传入的消息而不是传出的sms。但我需要的行为是限制发送短信 例如,我的路线如下所示:Apache camel 使用camel-smpp限制长sms,apache-camel,Apache Camel,我想知道如何在长短信的驼峰smpp端点上对传出短信进行限制。长短信分解得更小,最大大小为160个字符。如果我使用驼峰节流,它将应用于传入的消息而不是传出的sms。但我需要的行为是限制发送短信 例如,我的路线如下所示: <route id="firstsmsc" > <from uri="seda:firstsmsc"/> <throttle timePeriodMillis="1000"> <constant>8</constant>
<route id="firstsmsc" >
<from uri="seda:firstsmsc"/>
<throttle timePeriodMillis="1000">
<constant>8</constant>
<to uri=" {{smsc1.protocol}}://{{smsc1.username.producer}}@{{smsc1.host.mt}}: {{smsc1.port}}?password={{smpp1.enc.producerpassword}}&enquireLinkTimer=30000&transactionTimer=5000&systemType={{smsc1.systemType}}&sourceAddrTon={{CamelSmppSourceAddrTon1}}&destAddrTon={{CamelSmppDestAddrTon1}}&sourceAddrNpi={{CamelSmppSourceAddrNpi1}}&destAddrNpi={{CamelSmppDestAddrNpi1}}&typeOfNumber={{CamelSmppSourceAddrTon1}}&numberingPlanIndicator={{CamelSmppSourceAddrNpi1}}&lazySessionCreation=true"/>
</throttle>
</route>
如果smpp组件或SMSC将您的消息负载分解为160个字符的块,那么像您建议的那样进行节流将不会对您有所帮助。从骆驼的角度来看,只有一种交换,而不是很多。也许您可以尝试将exchange负载拆分为160个字符,然后限制生成的exchange。类似于
<route id="firstsmsc" >
<from uri="seda:firstsmsc"/>
<split streaming=false, parallelProcessing="false" >
<camel:bean ref="SMSSplitter" />
<throttle timePeriodMillis="1000">
<to uri="{{smsc1.protocol}}://{{smsc1.username.producer}}..."/>
</throttle>
</split>
</route>
如果我使用拆分器将长短信拆分为短短信,它将作为单独的短信接收,而不是手机上的一条短信。如果手机被smpp组件拆分,则手机会将短信息合并回原始长信息。有一个链接用于将短消息连接到长消息:。确定。但是,如果您不在Camel中拆分消息,我看不出Camel如何能够为您限制生成的多条消息。这似乎是您的SMS网关应该做的事情。似乎长SMS的拆分是由camel smpp或jsmpp完成的。我认为这个功能应该实现两个组件中的任何一个,以实现输出节流。