Jasmin SMS Throttling Error - sms

I get a throttling error in Jasmin logs whenever i use SMPP connections lately.
Users connecting to my Jasmin server have Kannel servers.
Any thoughts? Why is this happening?

There is limit of throughput for each SMPP connector. Find out from connection provider and also update throughput parameter for each connector in smppccm to some fix value. By default it is unlimited that causes throttling error.

Related

JasminSMS configuration

I successfully installed JasminSMS on Ubuntu, added SMS provider informations such as hostname, port, user and password, but failed to receive test SMS using HTTP API:
http://127.0.0.1:1401/send?username=foo&password=bar&to=*********&content=hello
I'm writing my own number, but I don't receive it. What other configuration do I need to do?
In this scenario (you want to terminate an SMS message by using Jasmin's HTTP API) you need:
Jasmin SMS Gateway installed
An HTTP user configured in Jasmin SMS (this can be done in the included CLI)
An SMPP connector configured in Jasmin SMS to connect to an SMS service provider. The credentials will be supplied by your SMS vendor of choice.
A routing rule in Jasmin SMS Gateway to decide which SMPP connector to use
This is all well-documented here https://docs.jasminsms.com/en/latest/installation/index.html#sending-your-first-sms
If your HTTP API call is successful you'll receive an HTTP success code (200) and a GUID. Jasmin SMS then tries to deliver the SMS message via the SMPP connector (according to the routing rule configured). If your SMS message was not received you need to look into the used SMPP-connector to troubleshoot further. If the message has been accepted by the SMPP connector of choice you'll have to contact your SMPP vendor and ask them to look into the possible delivery issues.
An SMS vendor is basically a company with agreements to various operators & aggregators around the world specializing in delivering SMS messages globally (or locally of course depending on their focus) for a price.
make sure u enter the smsc creditntials on the smpp connector and mae sure it is started(smppccm -1 cid) and check its sessision if it is bound smppccm -l

Spring websockets + Amazon MQ limitations

We want to use spring websockets + STOMP + amazon MQ as a full featured message broker. We were trying to do benchmarking, to find out how many client websocket connections single tomcat node can handle. But it appears that we hit amazonMQ connection limit first. As per the aws documentation, amazonMQ has a limit of 1000 connections per node (as far as I understand we can ask support to increase the limit, but I doubt that it can be increased big time). So my questions is:
1) Am I correct in assuming that for every websocket connection from client to spring/tomcat server, a corresponding connection being opened from server to broker? Is this correct behavior or we're doning something wrong here/missing something?
2) What can be done here? I mean I don't think this is a good idea to create broker node per evry 1000 users..
According to https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/messaging/simp/stomp/StompBrokerRelayMessageHandler.html your are doing everything right, and it is documented behavior.
Quote from javadoc:
For each new CONNECT message, an independent TCP connection to the broker is opened and used exclusively for all messages from the client that originated the CONNECT message. Messages from the same client are identified through the session id message header. Reversely, when the STOMP broker sends messages back on the TCP connection, those messages are enriched with the session id of the client and sent back downstream through the MessageChannel provided to the constructor.
As for a fix, you can write your own message broker relay, with tcp connection pooling.

How to know the socket being used in JMS?

I used client and the client will create a connection to server via HornetQ and Netty
Each of 1 minute, server will send heart beat and client (who subscribered) will be received this message. In the message, I included the root IP of server
Everything will be OK if this server had only 1 network card (NIC).
But in the case, server have 2 or more network cards. I met issue.
In the message is received by client, the IP of server not right.
I used InetAddress.getLocalHost().getHostAddress() to get to root IP and I known it wrong in this case server had 2 NICs
So can you give me some advise, how I can get right IP here?
Some guys said we can refer "the socket being used for getting right IP". Do you know how we can get it?
First of all I don't understand why you need IP address, If you think of implementing heartbeat, its not required, If you have used org.hornetq.jms.client.HornetQJMSConnectionFactory It automatically does heartbeat check. And If you have two servers and want to differentiate between servers, use a clientId and send it in message header and while listening you can select message based on the clientId or other approach use sync jms calls.

Restricting EMS cliemt connections

Hi Our EMS server is used by other clients for putting message. But some time they dont close connections and number of connections is reaching maximum limit of the server. Is there any way where we can restrict the number of connections for the client based on emsusername provided to the client or based on the host name from where client is creating connection. Is there any configuration we can do for client specific connections restriction.
No, there is no such provision in EMS server or client libraries where you can restrict the number of consumer/producer clients based on their user names or other properties. You can have a look at the JAAS and JACI provision supported by EMS which can be used to write your own JAVA authentication custom modules which run in JVM within EMS server. You can find more information about JAAS and JACI on Oracles documentation site.
Have you looked into the server_timeout_client_connection setting ?
From the doc :
server_timeout_client_connection = limit
In a server-to-client connection, if the server does not receive a heartbeat for a
period exceeding this limit (in seconds), it closes the connection.
We recommend setting this value to approximately 3 times the heartbeat interval, as it is specified in client_heartbeat_server.
Zero is a special value, which disables heartbeat detection in the server (although
clients still send heartbeats).

Ping to APNS not returning

I am trying to connect to Apple's Push Notification servers and push some notifications. All connections attempts are timing out. Tried pinging the server gateway.sandbox.push.apple.com and gateway.push.apple.com and they are not reachable. Are these servers alive and reachable? Can any body validate that they are reachable? Is it a regional problem?
I posted this question on the Apple forums but did not get any response. But, I figured it out myself after lot of experiments. Any requests to APNS, whether ping or connection requests, that are routed through proxies are filtered out in the transit and will never reach the APNS. This is probably done due to security concerns by the Apple guys. This means that any requests from your machines at your work locations will never go through as they are always routed through a proxy server. Any requests that sent through a direct internet connection without any intermediate proxies make it to APNS.
To test this you can tether your mobile 3G connection and share it with your PC/Laptop and then try connecting or pinging APNS and it should succeed. Your mpobile 3G connection is a direct internet connection. To get it working at your work locations ask your IT for a direct connection.
Update: It happened to be a firewall issue. Resolved after configuring the firewalls to allow connections to APNS range of IPs.

Resources