-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathpackage.yaml
127 lines (97 loc) · 2.43 KB
/
package.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
name: postgresql-simple-queue
version: '1.0.1'
synopsis: A PostgreSQL backed queue
description: ! 'This module utilize PostgreSQL to implement a durable queue for efficently
processing arbitrary payloads which can be represented as JSON.
Typically a producer would enqueue a new payload as part of larger database
transaction
> createAccount userRecord = do
> ''runDBTSerializable'' $ do
> createUserDB userRecord
> ''enqueueDB'' "queue_schema" $ makeVerificationEmail userRecord
In another thread or process, the consumer would drain the queue.
> forever $ do
> -- Attempt get a payload or block until one is available
> payload <- lock "queue" conn
>
> -- Perform application specifc parsing of the payload value
> case fromJSON $ pValue payload of
> Success x -> sendEmail x -- Perform application specific processing
> Error err -> logErr err
>
> -- Remove the payload from future processing
> dequeue "queue" conn $ pId payload
>
> To support multiple queues in the same database, the API expects a table name
string
> to determine which queue tables to use.'
category: Web
author: Jonathan Fischoff
maintainer: [email protected]
copyright: 2017 Jonathan Fischoff
license: BSD3
github: jfischoff/postgresql-queue
extra-source-files:
- README.md
ghc-options:
- -Wall
- -Wno-unused-do-bind
default-extensions:
- OverloadedStrings
dependencies:
- base >=4.7 && <5
- time
- transformers
- random
- text
- monad-control
- exceptions
- postgresql-simple
- pg-transact
- aeson
- bytestring
- stm
- here
library:
source-dirs: src
exposed-modules:
- Database.PostgreSQL.Simple.Queue
- Database.PostgreSQL.Simple.Queue.Migrate
tests:
unit-tests:
main: Spec.hs
source-dirs: test
ghc-options:
- -O2
- -threaded
- -rtsopts
- -with-rtsopts=-N
dependencies:
- base64-bytestring
- cryptohash-sha1
- postgresql-simple-queue
- hspec
- hspec-core
- hspec-discover
- hspec-expectations-lifted
- async
- split
- tmp-postgres
- resource-pool
executables:
benchmark:
main: Main.hs
source-dirs: benchmarks
ghc-options:
- -O2
- -Wall
- -threaded
- -rtsopts
- -with-rtsopts=-N
dependencies:
- base64-bytestring
- cryptohash-sha1
- postgresql-simple-queue
- async
- tmp-postgres
- resource-pool