code: func ScheduleMulticastQueueBatch(size int) error {
  	return storage.Transaction(func(tx sqlx.Ext) error {
  		// this locks the selected queue-items so that this query can be
  		// executed by other instances in parallel.
  		multicastQueueItems, err := storage.GetSchedulableMulticastQueueItems(tx, size)
  		if err != nil {
  			return errors.Wrap(err, "get multicast queue-items error")
  		}
  
  		for _, qi := range multicastQueueItems {
  			err := multicast.HandleScheduleQueueItem(tx, qi)
  			if err != nil {
  				log.WithFields(log.Fields{
  					"multicast_group_id": qi.MulticastGroupID,
  					"id":                 qi.ID,
  				}).WithError(err).Error("schedule multicast queue-item error")
  			}
  		}
  
  		return nil
  	})
  }
docs: // ScheduleMulticastQueueBatch schedules a donwlink multicast batch (Class-B & -C).