Создание очереди FIFO - PullRequest
       10

Создание очереди FIFO

1 голос
/ 02 апреля 2019

Я создаю систему очередей с использованием SQL Server в серверной части приложения.План состоит в том, чтобы создать систему очередей типа FIFO, аналогичную тому, как устроен ресторан быстрого питания.Клиенты будут входить в очередь и будут обслуживаться X количеством работников.Когда клиент обрабатывается, следующий клиент будет обслуживаться доступным работником.Я думаю, что моя проблема похожа на проблему в этом посте , но я не уверен, что это точно такой же сценарий.

Я посмотрел на «Использование таблицами в качестве очередей» Русано article , и я понимаю, что мне нужно сделать что-то похожее на его пример FIFO, показанный ниже:

create table FifoQueue 
(
    Id bigint not null identity(1,1),
    Payload varbinary(max)
);
go

create clustered index cdxFifoQueue on FifoQueue (Id);
go

create procedure usp_enqueueFifo
    @payload varbinary(max)
as
    set nocount on;

    insert into FifoQueue (Payload) values (@Payload);
go

create procedure usp_dequeueFifo
as
    set nocount on;

    with cte as 
    (
        select top(1) Payload
        from FifoQueue with (rowlock, readpast)
        order by Id
    )
    delete from cte
    output deleted.Payload;
go

Пример структуры очереди

Status таблица:

1 = Waiting
2 = Getting served
3 = Processed

EnterQueue Time | LeaveQueue Time | Worker | Status
----------------+-----------------+--------+--------
11:22           | 11:24           |    1   |   3
11:23           |                 |    2   |   2
11:26           |                 |    1   |   2
11:27           |                 |   NULL |   1

Клиенты добавляются в очередь с помощью хранимой процедуры.Следующий обслуживаемый клиент основан на времени его входа.

Могу ли я использовать хранимую процедуру, основанную на примере FIFO, для обработки / вывода очереди клиентов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...