Skip to content

Commit b866f17

Browse files
Copilotmasilver99
andcommitted
Complete project renaming: update documentation and database scripts
Co-authored-by: masilver99 <14352629+masilver99@users.noreply.github.com>
1 parent ce1f02d commit b866f17

11 files changed

Lines changed: 43 additions & 43 deletions

File tree

Procession.Postgres/dbscripts/ReloadData.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
docker cp ./create_db.sql posgres12:/tmp/create_db.sql
33

44
docker exec -u postgres posgres12 psql -f /tmp/create_db.sql
5-
docker exec -u postgres posgres12 psql -d agqueue -f /tmp/create_tables.sql
5+
docker exec -u postgres posgres12 psql -d procession -f /tmp/create_tables.sql
66

77

Procession.Postgres/dbscripts/create_db.sql

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
--This is run by the admin in the default database (the agqueue database will not have existed yet)
2-
DROP OWNED BY agqueue_user;
3-
DROP DATABASE IF EXISTS agqueue;
1+
--This is run by the admin in the default database (the procession database will not have existed yet)
2+
DROP OWNED BY procession_user;
3+
DROP DATABASE IF EXISTS procession;
44

5-
DROP USER IF EXISTS agqueue_user;
5+
DROP USER IF EXISTS procession_user;
66

7-
CREATE DATABASE agqueue;
7+
CREATE DATABASE procession;
88

9-
CREATE USER agqueue_user PASSWORD 'everex';
10-
GRANT ALL PRIVILEGES ON DATABASE agqueue to agqueue_user;
9+
CREATE USER procession_user PASSWORD 'everex';
10+
GRANT ALL PRIVILEGES ON DATABASE procession to procession_user;
1111

1212
SET timezone TO 'America/New_York';
1313

Procession.Postgres/dbscripts/create_tables.sql

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
--This is run by the admin in the agqueue database
1+
--This is run by the admin in the procession database
22

33
CREATE EXTENSION IF NOT EXISTS citext;
44

@@ -47,11 +47,11 @@ Create table IF NOT EXISTS message_tags
4747
FOREIGN KEY(tag_id) REFERENCES tags(id) ON DELETE CASCADE,
4848
FOREIGN KEY(message_id) REFERENCES messages(id) ON DELETE CASCADE);
4949

50-
GRANT ALL PRIVILEGES ON DATABASE agqueue TO agqueue_user;
51-
GRANT USAGE ON SCHEMA public to agqueue_user;
50+
GRANT ALL PRIVILEGES ON DATABASE procession TO procession_user;
51+
GRANT USAGE ON SCHEMA public to procession_user;
5252
--Not needed, yet
53-
GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO agqueue_user;
54-
GRANT ALL ON ALL TABLES IN SCHEMA public TO agqueue_user;
53+
GRANT ALL ON ALL SEQUENCES IN SCHEMA public TO procession_user;
54+
GRANT ALL ON ALL TABLES IN SCHEMA public TO procession_user;
5555

5656
--This locks the next record in the DB, updates it to reflect that the record is active and returns the record
5757
CREATE OR REPLACE PROCEDURE dequeue_message(

Procession.Sqlite/Procession.Sqlite.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
</ItemGroup>
2727

2828
<ItemGroup>
29-
<ProjectReference Include="..\AgQueue.Server.Common\AgQueue.Server.Common.csproj" />
29+
<ProjectReference Include="..\Procession.Server.Common\Procession.Server.Common.csproj" />
3030
</ItemGroup>
3131

3232
</Project>

README.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
# AgQueue
1+
# Procession
22
A simple, opinionated, transactional work queue
33

44
![.NET Core](https://github.com/masilver99/AgQueue/workflows/.NET%20Core/badge.svg?branch=master)
55

6-
AgQueue is a server process that can use almost any database as it's back end. It essentially turns any supported database into a full fledged work queue.
6+
Procession is a server process that can use almost any database as its back end. It essentially turns any supported database into a full fledged work queue.
77

8-
AgQueue runs between the clients and the database and automatically provides features of an advanced work queue or messaging system.
8+
Procession runs between the clients and the database and automatically provides features of an advanced work queue or messaging system.
99

1010
## Purpose
1111

1212
To reliably deliver messages to a requestor/subscriber. Successful messages are only delivered to one REQ/SUB. In case of failure, the message will be redelivered, after a delay, unless the retry count is exceeded.
1313

14-
Have you ever used MSMQ, only to be impacted by it's limitations? For example, not being able to use priority with transactions. This aims to allieviate those pain points.
14+
Have you ever used MSMQ, only to be impacted by its limitations? For example, not being able to use priority with transactions. This aims to alleviate those pain points.
1515

1616
Besides, for simple work queues, MSMQ may be overkill. Same with RabbitMQ and others.
1717

@@ -23,27 +23,27 @@ Besides, for simple work queues, MSMQ may be overkill. Same with RabbitMQ and o
2323

2424
### Example
2525

26-
A classic example of when to use a work queue is sending email from a website. When your users request a password change or any other activity that will send an email, you don't want their browsing experience to slow down while the email is sent, so you place a message into a queue, which is near instant. In the background or on another machine, the message is picked up and and email is sent out.
26+
A classic example of when to use a work queue is sending email from a website. When your users request a password change or any other activity that will send an email, you don't want their browsing experience to slow down while the email is sent, so you place a message into a queue, which is near instant. In the background or on another machine, the message is picked up and an email is sent out.
2727

28-
## AgQueue Features
28+
## Procession Features
2929

3030
* Transactions. Transactions are mandatory. Transactions have expiry timespans. Transactions can be explicitly extended for long running processes.
31-
* Priority. Messages are returned based on Priority and then by first in. Priority can be turned off my simply not setting it on each message.
31+
* Priority. Messages are returned based on Priority and then by first in. Priority can be turned off by simply not setting it on each message.
3232
* Durable. Messages are always reliably stored to disk.
3333
* Multiple Queues. Create as many queues as needed.
34-
* Baked-in Retry. Messages automatically reenter the queue after a Transaction rollback, BUT you can set a retry delay, eliminating need for a seperate retry queue and preventing poison messages.
34+
* Baked-in Retry. Messages automatically reenter the queue after a Transaction rollback, BUT you can set a retry delay, eliminating need for a separate retry queue and preventing poison messages.
3535
* Optional message metadata. Allows storage of custom data relating to the message.
3636
* FIFO or custom ordering based on json message metadata, correlation id, group name or tag value. Beware of orphaned messages!
3737
* Optional Message History.
3838
* Optional Correlation ID (integer) and/or Group string to assist with grouping of messages to pull.
39-
* Optional Tags. Tags can be applied to any message. A tag can also have a value, for example, year=2019. There can be multiple tags on a message. This is a more effeicient way of organizing and pulling messages than using the metadata.
39+
* Optional Tags. Tags can be applied to any message. A tag can also have a value, for example, year=2019. There can be multiple tags on a message. This is a more efficient way of organizing and pulling messages than using the metadata.
4040

4141
## Additional Details
4242

43-
AgQueue consists of a server process that contains a gRPC communication server and a gRPC client for communicating with the queue.
43+
Procession consists of a server process that contains a gRPC communication server and a gRPC client for communicating with the queue.
4444

45-
AgQueue uses SQLite for storage. While not as fast as using in-memory containers, it's HIGHLY resilient to machine failures, i.e. a spurious reboot won't cause your queue to disappear. At a future date, we may offer different storage options, including memory-only, for those that don't want durable storage.
45+
Procession uses SQLite for storage. While not as fast as using in-memory containers, it's HIGHLY resilient to machine failures, i.e. a spurious reboot won't cause your queue to disappear. At a future date, we may offer different storage options, including memory-only, for those that don't want durable storage.
4646

47-
AgQueue is built with C# in .NET 9. This means it should run on Windows, Linux and Mac.
47+
Procession is built with C# in .NET 9. This means it should run on Windows, Linux and Mac.
4848

49-
We'll post benchmarks once the project is complete, but the goal is more durability and resilency than raw speed.
49+
We'll post benchmarks once the project is complete, but the goal is more durability and resiliency than raw speed.

dev_overview.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
1-
# Development overview of AgQueue #
1+
# Development overview of Procession #
22

3-
This document serves as a collection of development notes and will grow substantially and become mroe organized over time.
3+
This document serves as a collection of development notes and will grow substantially and become more organized over time.
44

55
## Project Descriptions: ##
66

7-
AgQueue.Library - The API library performing queue and message functions. This is the core of the project. This library will be exposed via REST or a TCP server. It can use any storage library, although, currently only SQLite is supported.
7+
Procession.Library - The API library performing queue and message functions. This is the core of the project. This library will be exposed via REST or a TCP server. It can use any storage library, although, currently only SQLite is supported.
88

9-
AgQueue.Library.Tests - unit and integration tests for the Library project
9+
Procession.Library.Tests - unit and integration tests for the Library project
1010

11-
AgQueue.TcpClient - A TCP client to communicate with AgQueue. This will be used to
11+
Procession.TcpClient - A TCP client to communicate with Procession. This will be used to
1212

13-
AgQueue - Project for Server process hosting the AgQueue.Library. This will eventually be a TCP and REST server, configurable by a config file.
13+
Procession - Project for Server process hosting the Procession.Library. This will eventually be a TCP and REST server, configurable by a config file.
1414

15-
AgQueue.Common - Will eventually contain interfaces for the client libraries
15+
Procession.Common - Will eventually contain interfaces for the client libraries
1616

1717
## Expected Development Timeline: ##
1818

19-
Complete AgQueue.Library project. This should allow for the following functions:
19+
Complete Procession.Library project. This should allow for the following functions:
2020

2121
1) Create Transaction
2222
2) Commit Transaction
@@ -30,23 +30,23 @@ Complete AgQueue.Library project. This should allow for the following functions
3030
10) Delete Message - Deletes a message without marking it as processed
3131
11) GetMessageCount - Get the number of message queued
3232

33-
As each function is completed, unit tests should be created to comfirm functionality
33+
As each function is completed, unit tests should be created to confirm functionality
3434

3535
## Developer Expectations ##
3636

3737
Code should follow style cop recommendations. The style cop analyzer is checked in with each project.
3838

3939
There should be no warnings in a Pull Requests.
4040

41-
All public methods and properties should be well documented using the documentaion comment: ///
41+
All public methods and properties should be well documented using the documentation comment: ///
4242

4343
## Design Decisions ##
4444

4545
### Primary Keys ###
4646

4747
Primary keys are int64s. They are created by the application, instead of the database or storage mechanism. This allows for handling of storage that doesn't provide a way to increment the primary key.
4848

49-
While using something like a GUID would come with certain advantages, I've seen problems with using them. Many databases don't index them effeciently when they aren't sequential. Performance could be impacted with a great deal of lookups by the primary key. I've seen SQLServer suffer when using GUIDs as the primary key.
49+
While using something like a GUID would come with certain advantages, I've seen problems with using them. Many databases don't index them efficiently when they aren't sequential. Performance could be impacted with a great deal of lookups by the primary key. I've seen SQLServer suffer when using GUIDs as the primary key.
5050

5151
Not using GUID has some serious tradeoffs. Only one process can use the storage, since multiple processes would cause primary key conflicts.
5252

tests/Procession.Integration.Tests/LargeDatasetTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
using Microsoft.AspNetCore.Server.Kestrel.Core;
66
using Procession.Common.Extensions;
77
using Microsoft.Extensions.DependencyInjection;
8-
using AgQueue.Models;
8+
using Procession.Models;
99
using System.Threading.Tasks;
1010
using Grpc.Net.ClientFactory;
1111
using System;

tests/Procession.Integration.Tests/StartupGrpc.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
4747

4848
app.UseEndpoints(endpoints =>
4949
{
50-
endpoints.MapGrpcService<AgQueueService>();
50+
endpoints.MapGrpcService<ProcessionService>();
5151
});
5252
}
5353
}

tests/Procession.Library.Tests/MessageTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using System.Net.Sockets;
33
using NUnit;
44
using NUnit.Framework;
5-
using AgQueue.Library;
5+
using Procession.Library;
66

77
namespace Procession.Library.Tests
88
{

tests/Procession.Library.Tests/QueueTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using System.Net.Sockets;
33
using NUnit;
44
using NUnit.Framework;
5-
using AgQueue.Library;
5+
using Procession.Library;
66

77
namespace Procession.Library.Tests
88
{

0 commit comments

Comments
 (0)