Keeping the same message group id between linked FIFO SNS and FIFO SQS - amazon-sns

I have a FIFO SNS linked to a FIFO SQS (SNS sends messages to the SQS). Now I want to use message ordering, using the message group id. So the publisher of the message will set the message group id, while sending the message to the SNS. I want these messages to be consumed one by one for a group.
I read the documentation on this, here:
The SNS FIFO topic passes the group ID to the subscribed Amazon SQS FIFO queues.
Does this mean that a group id set for the FIFO SNS will be set as the group ID for the FIFO SQS? Or do I explicitly need to set the group ID in the FIFO SQS?

Related

Are BLE devices required to respond to a SCAN_REQ requests?

I have a BLE device that doesn't respond to SCAN_REQ and am working it out with the vendor independently per https://github.com/espressif/esp-idf/issues/10660.
When I use Nordic nRD Connect iphone app as a client I can see that device in the scan list and can connect to it. However, when I use a different client, a python Windows one, that client doesn't show the device in its scan list and doesn't connect to it if I specify the exact address.
My question is, are BLE 4 devices required to respond to SCAN_REQ requests to be discoverable and connectable or is it just optional response to provide additional advertisement data?
EDIT, I believe that Emil's answer below (thanks) refers to this quote
Yes, it's required to reply with a scan response. That is defined in Bluetooth Core v5.3, Vol 6 Part B (Link Layer), section 4.4.2.3, using the word "shall".
There is one exception though. There is a Filter Accept List in the controller which can contain addresses of centrals allowed to scan and/or connect. There are four combinations the host can set (advertising filter policy) that control if this list shall be used for filtering incoming SCAN_REQ and CONNECT_IND packets, respectively. If you don't use this filtering mechanism, then the device must send a scan response to every scan request.
There are two possible approaches to scanning—Passive Scanning or Active Scanning.
Passive Scanning is when Scanners receive advertising packets and process the contents.
In the case of Active Scanning, however, a device may decide it wants to know more about an advertising device and respond to the initial advertising packet by sending a Scan Request GAP protocol data unit (PDU). This basically means ‘Tell me more.’ The device receiving the Scan Request can send back a Scan Response PDU with more information, once again in the form of a collection of AD types.
The above has been extracted from: https://www.bluetooth.com/blog/advertising-works-part-1/ [the emphasis mine].

What is key difference between firebase "multicast" send and device group send?

I would like to know what is the key difference between firebase multicast send and device group send? What are the use cases where in we can use multicast send and device group send?
A device group can contain up to 20 separate device tokens. It is typically used for address a set of devices of the same user. Note that device groups are only exposed on the legacy API, and not in the newer versioned API of Firebase Cloud Messaging.
Multicast messaging can be used to send a message to 100-500 (depending on the platform) device tokens at a time. For an example of this, see send messaging to multiple devices and sending a batch of messages in the documentation.

ZeroMQ: Internal queuing policy before having a valid connection

Say if I have an inproc-PAIR messaging system. Before the Receiver connects to the Sender, the Sender is already bound and starts sending out messages right away.
Now, before the connection succeeds, will ZMQ choose to do one of the following:
queue up those messages internally
block Sender from sending those messages
simply discard them?
I know that ZMQ has an internal queue of 1000 messages, and read that with PubSub it will send out messages right after binding happens and thus will lose messages. But I'm not sure about other protocols.
From the ZeroMQ documentation :
When a PAIR socket enters the mute state due to having reached the high water mark for the connected peer, or if no peer is connected, then any send operations on the socket will block until the peer becomes available for sending; messages are not discarded.
So your first two options are correct; it's queuing messages till you reach hwm then blocks the sender.
It is not dicarding messages.

BLE GATT change peripheral device name and notify central

Is it possible to notify a bonded central that the device name of the peripheral has changed (on the fly)?
Changes to any attribute are handled with Notifications or Indications. However, not every attribute has a CCC value where you can turn on Notifications or Indications in order to be notified of a change. I suspect most devices don't do this for the device name, but I suspect that most devices don't change names (ie. it's hard coded in).
So, best way to monitor the device name is set the CCC to get notifications. But if there's no CCC value to set, then you have to poll the device to check for changes.

How to identify pushback under Win IOCP?

How can I identify TCP pushback when using IOCP? I.e. how can I find out that the receiver is not receiving, that tx/rx buffers on both sides of connection are full and that the sender should cease to send more data?
With any async TCP send operation the way to determine the rate that the peer is receiving data is to monitor the rate of send completions on the sender.
I've written about this in depth here. In summary, when the receiver's buffers fill and TCP flow control is in operation and the TCP window is reduced the sender cannot send which causes the sender's TCP buffers to fill. This then means that async send requests can not complete. If you track the number of outstanding send requests that are pending you can spot this situation and throttle the sender.
When this happens, the send won't complete.

Resources