Apache camel 使用camel-smpp限制长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>

我想知道如何在长短信的驼峰smpp端点上对传出短信进行限制。长短信分解得更小,最大大小为160个字符。如果我使用驼峰节流,它将应用于传入的消息而不是传出的sms。但我需要的行为是限制发送短信

例如,我的路线如下所示:

<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}}&amp;enquireLinkTimer=30000&amp;transactionTimer=5000&amp;systemType={{smsc1.systemType}}&amp;sourceAddrTon={{CamelSmppSourceAddrTon1}}&amp;destAddrTon={{CamelSmppDestAddrTon1}}&amp;sourceAddrNpi={{CamelSmppSourceAddrNpi1}}&amp;destAddrNpi={{CamelSmppDestAddrNpi1}}&amp;typeOfNumber={{CamelSmppSourceAddrTon1}}&amp;numberingPlanIndicator={{CamelSmppSourceAddrNpi1}}&amp;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完成的。我认为这个功能应该实现两个组件中的任何一个,以实现输出节流。