Broker prefetch config
takes effect if the consumerInfo contains the default value (1000), indicating that it does not have a preference.
However in the case that the broker chooses 0, to make all consumers pull messages, this information needs to be propagated back to the consumer to allow the receive(..) call to initiate a pull. Currently it is conditional on the consumer prefetch value == 0 which is currently not updated.
The fix is to have the broker send a connection control message to update the prefetch when broker config uses 0, and have the receive(..) call check the current prefetch value.